问题描述:

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;

}

}

I hava this problem: Exception in thread "main" java.lang.NullPointerException

网友答案:

You are never initializing your animals array in your mainMethod class.

In your public mainMethod() method, you need to do animals = new animalsData[INITIAL SIZE];

If you want it to grow automatically, you should use a List. Even then you would not use this.animals.length + 1 as its index. you would simply do List.add()

网友答案:
public List<animalsData> animals = new ArrayList<animalsData>()

public mainMethod(){
    animals.add(new animalsData("CAT", "4"));
}

learn more about Lists in Java, arrays are not expandable by default. And can not expand beyond it's dimension if you add an item after last item of the array.

网友答案:

1. Array must be initialized when its declared.

Eg:

public animalsData[] animals; 


    public static void main(String[] args) {
        mainMethod run = new mainMethod();
        System.out.println(run.animals.length);
    }

The above code gives a NullPointerException, cause animals which is an Object Reference Array Variable is Null and is not assigned the Array Object on the heap.

public animalsData[] animals = new animalsData[10]; 


        public static void main(String[] args) {
            mainMethod run = new mainMethod();
            System.out.println(run.animals.length);
        }

The above code works fine....as the Array is now initialized.

I would recommend you to use java.util.Collections instead of arrays, they are very flexible.

List<animalsData> animals = new ArrayList<animalsData>();

相关阅读:
Top