Java 访问主方法中的对象变量时,对象是在另一个方法中创建的
大家好,我是Java和OOP新手,所以请对我温柔一点,我会尽量让这个问题变得有意义。 我有一个接受arraylist的方法,我想从arraylist中获取元素,并将它们设置为Student类下的新对象Java 访问主方法中的对象变量时,对象是在另一个方法中创建的,java,object,Java,Object,大家好,我是Java和OOP新手,所以请对我温柔一点,我会尽量让这个问题变得有意义。 我有一个接受arraylist的方法,我想从arraylist中获取元素,并将它们设置为Student类下的新对象 public class Student { String id; String firstname; String lastname; public String getId() { return id; } publi
public class Student {
String id;
String firstname;
String lastname;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public void saystuff() {
System.out.println(id + firstname + lastname);
我认为问题在于我将对象stu1=new Student();。我是否必须在每个方法中都这样做才能访问它?我应该在哪里创建此对象,以便可以从addStudent方法添加到该对象,并在其他方法中从该对象检索信息
public void addStudent(ArrayList<String> id, ArrayList<String> firstName,ArrayList<String> lastName) {
// setting the stu1 objects id firstname and lastname variables
Student stu1 = new Student();
stu1.setId(id.get(0));
stu1.setFirstname(firstName.get(0));
stu1.setLastname(lastName.get(0));
在我的main方法中调用staystuff()时,它返回null,显然我设置变量时出错了,或者是因为我必须在main方法下再次创建新的stu1对象?如何从静态main方法访问stu1,因为它是在非静态方法中创建的
主要方法
```
public static void main(String[] args) throws IOException {
Student stu1 = new Student();
stu1.saystuff();
我找到了答案
在我的主类的顶部,我声明了新对象并使其成为静态的
public class main {
public static Student stu1 = new Student();
在试图打印未初始化的字段(它们都是
null
)之前,您需要调用id、firstname和lastname的setter。我做了,但仍然为空了很多空行,超过280个字符的行,缩进。。。这很难理解code@LearningJavaguy在main
中,有两行-一行接一行<代码>学生stu1=新学生()代码>-创建带有null
字段的Student
类的新实例。和,stu1.saystuff()代码>显示新实例(带有null
字段)。您需要在这两条语句之间调用setter(或者添加一个构造函数,在实例化时设置字段)。或者调用某个方法来获取您真正想要的Student
实例,但是您的addStudent
方法没有被调用(因此它是不相关的)。@ElliottFrisch谢谢,但是它们已经在addStudent方法中设置好了。我可以看到它们在调试器中被设置。我是否需要重新设置它们,或者我是否有办法从main呼叫它们?
public class main {
public static Student stu1 = new Student();