mainMethod.java
public class mainMethod{
public animalsData[] animals;
public mainMethod(){
animals[this.animals.length + 1] = new animalsData("CAT", "4");
}
public static void main(String[] args) {
mainMethod run = new mainMethod();
}
}
animalsData.java
public class animalsData{
String name, l;
public animalsData(String name, String l) {
super();
this.name= name;
this.l= l;
}
}
我有这个问题:线程“main”中的异常java.lang.NullPointerException
答案 0 :(得分:6)
您永远不会在animals
课程中初始化mainMethod
数组。
在public mainMethod()
方法中,您需要执行animals = new animalsData[INITIAL SIZE];
如果您希望自动增长,则应使用List
。即使这样,你也不会使用this.animals.length + 1
作为索引。你只需List.add()
答案 1 :(得分:4)
public List<animalsData> animals = new ArrayList<animalsData>()
public mainMethod(){
animals.add(new animalsData("CAT", "4"));
}
了解有关Java列表的更多信息,默认情况下,数组不可扩展。如果在数组的最后一项之后添加项目,则无法扩展超出维度。
答案 2 :(得分:1)
1。 Array
必须初始化 declared
。
<强>例如强>
public animalsData[] animals;
public static void main(String[] args) {
mainMethod run = new mainMethod();
System.out.println(run.animals.length);
}
上面的代码提供NullPointerException
,因为animals
Object Reference Array Variable
空且未分配 {在堆上{1}}。
Array Object
以上代码工作正常......因为现在已初始化数组。
我建议您使用public animalsData[] animals = new animalsData[10];
public static void main(String[] args) {
mainMethod run = new mainMethod();
System.out.println(run.animals.length);
}
代替数组,它们非常灵活。
java.util.Collections