静态内部类的调用对象

时间:2015-01-02 18:56:12

标签: java

我正在尝试从静态成员类调用一个对象,但是我得到了一个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.");

        }

    }
}

4 个答案:

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

此外,公共和静态字段通常都是糟糕的设计。目前尚不清楚你在这里做了什么,但这种模式不应该用在实际代码中。