使用Getter-Setter后私有变量未更新,输出null问题求助
问题原因及修复方案
核心问题
你在exitTutor()方法里重新创建了一个Student对象,这个对象和main方法中已经设置好姓名的scholar是完全独立的两个实例。新实例的studentName从未被赋值,所以调用results()时输出null。
修复方法
把main方法中已经初始化并设置好姓名的Student对象传递给exitTutor(),而不是在方法内新建对象。
修改后的完整代码:
class Main { public static void main(String[] args){ int choice; //Sets the student's name Student scholar = new Student(); Scanner nameInput = new Scanner(System.in); System.out.println("Please enter your name"); String newName = nameInput.nextLine(); scholar.setName(newName); exitTutor(scholar); // 传入已配置好的Student对象 } // 修改方法参数,接收外部传入的Student实例 public static void exitTutor(Student scholar){ scholar.results(""); System.exit(0); } } class Student { private String studentName; public void setName(String studentName){ this.studentName = studentName; } public void results(String result){ System.out.println("Final Results for " + studentName); } }
补充说明
你之前的可用代码没有这个问题,是因为当时没有在单独的方法里新建Student实例,而是直接使用了同一个已赋值的对象。这次新增exitTutor()时误创建了新实例,导致数据无法共享。
内容的提问来源于stack exchange,提问作者Takeshi DBXV
相关产品推荐
相关产品推荐

