Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问主方法中的对象变量时,对象是在另一个方法中创建的_Java_Object - Fatal编程技术网

Java 访问主方法中的对象变量时,对象是在另一个方法中创建的

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

大家好,我是Java和OOP新手,所以请对我温柔一点,我会尽量让这个问题变得有意义。 我有一个接受arraylist的方法,我想从arraylist中获取元素,并将它们设置为Student类下的新对象

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();