我正在尝试从静态成员类调用一个对象,但是我得到了一个exceptionInitializationError。请你看看我的代码,让我知道什么是错的?
import java.util.ArrayList;
public class StaticInit {
public static void main(String[] args) throws Exception {
ArrayList<Olive> olives = OliveJar.olives;
for( Olive o : olives) {
System.out.println(o);
}
}
public static class OliveJar {
public static ArrayList<Olive> olives;
static {
olives.add(new Olive("Olive 1!", 10));
olives.add(new Olive("Olive 2!", 30));
olives.add(new Olive("Olive 3", 10));
System.out.println("Initialization Successful. Your Jar Contains " + olives.size() + " Olives.");
}
}
}
答案 0 :(得分:1)
ExceptionInitializerError
是因为您没有初始化olives
添加
olives = new ArrayList<Olive>();
在将实例添加到静态初始化程序块
中的列表之前答案 1 :(得分:1)
初始化你的数组
public static ArrayList<Olive> olives=new ArrayList<Olive>();
答案 2 :(得分:0)
将public static ArrayList<Olive> olives;
更改为public static ArrayList<Olive> olives = new ArrayList<>;
。
答案 3 :(得分:0)
您的嵌套类有一个永远不会初始化的字段olives
,因此在调用add
时会出现异常。为其指定一个对象:
olives = new ArrayList<>();
此外,公共和静态字段通常都是糟糕的设计。目前尚不清楚你在这里做了什么,但这种模式不应该用在实际代码中。