有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果在java中的构造函数之外初始化类成员列表,会有什么问题

这是我的密码:

     A.java
****************
Public class A {
  List<String> member;  
}

    Main.java
****************
public void main() {
  List<String> l = new ArrayList<String>();
  l.add("apple");
  l.add("balala");
  A a = new A();
  a.member = l;

  for (String s : a.member)
    system.println(s);
  } 
}

然后我得到Java空指针错误

另一方面,如果我在class A的构造函数中执行new a.member。那么一切都好了

那么上面的代码有什么问题?(target Array can not be copied without initialization


共 (2) 个答案

  1. # 1 楼答案

    我看不出你在哪里创造“a”。你需要像这样的东西:

    public void main() {
      List<String> l = new ArrayList<String>();
      l.add("apple");
      l.add("balala");
      A a = new A();
      a.member = l;
    
      for (String s : a.member)
        system.println(s);
      } 
    }
    
  2. # 2 楼答案

    您正在从另一个类访问非静态成员变量,因此必须创建一个对象来访问该变量

    在您的情况下,它将是A a = new A();

    Main。java

    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
    
        public static void main(String[] args) {
            List<String> l = new ArrayList<String>();
            l.add("apple");
            l.add("balala");
            A a = new A();
            a.member = l;
    
            for (String s : a.member) {
                System.out.println(s);
            }
        }
    }
    class A {
        List<String> member;
    }