静态类未加载

时间:2017-09-16 21:58:51

标签: java class constructor static static-constructor

熟悉C#,现在学习Java中的静态类。 在下面的代码中,我假设staticClass构造函数是否已在启动时初始化。但事实并非如此。当调试光标到达main方法中第一个for循环的断点时。我收到错误" staticClass未加载"。

问题:有没有办法在main方法执行之前执行静态类构造函数?或者为什么没装?类似的静态类在启动时在C#中加载。但在java?认为这是一个无效的代码。作为一名java专家,您如何重写此代码?因为它应该纠正。

public class Main {

    public static class staticClass
    {
        public static int myArray[];

        public staticClass()
        {
            myArray=new int[10];
        }

        public static int NextUnique()
        {
            int r=(int)(Math.random()*10);
            return r;
        }
    }
    //=new int[10];
    public static void main(String[] args) throws ClassNotFoundException {

        for (int i=0;i<staticClass.myArray.length;i++)
            staticClass.myArray[i]=  staticClass.NextUnique();

        for(int i=0;i<staticClass.myArray.length;i++) {
            String msg= MessageFormat.format("{0}. value= {1}",i,staticClass.myArray[i]);
            System.out.println(msg);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以像这样初始化数组:

    public static int myArray[] = new int[10];

答案 1 :(得分:1)

为此,您需要使用静态静态初始化块(构造函数)。而不是

 public staticClass()
    {
        myArray=new int[10];
    }

使用

 static
    {
        myArray=new int[10];
    }

您的构造函数现在是实例构造函数。无论何时使用new运算符,它都有效。请参阅static constructor in c#static initialization block (constructor) java