静态 Class 未加载
Static Class not loaded
我熟悉 C#,现在 Java 学习静态 class。
在下面的代码中,我假设 staticClass 构造函数是否在启动时已经初始化。但事实并非如此。当调试光标到达 main 方法中第一个 for 循环的断点时。我得到一个错误 "staticClass not loaded".
问题:有没有办法在 main 方法执行之前执行静态 class 构造函数?或者为什么它没有加载?启动时在 C# 中加载类似的静态 class。但是在 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);
}
}
}
你可以像这样初始化数组:
public static int myArray[] = new int[10];
为此,您需要使用静态静态初始化块(构造函数)。而不是
public staticClass()
{
myArray=new int[10];
}
使用
static
{
myArray=new int[10];
}
您现在的构造函数是实例构造函数。只要您使用 new 运算符,它就可以工作。参见 static constructor in c# and static initialization block (constructor) java
我熟悉 C#,现在 Java 学习静态 class。 在下面的代码中,我假设 staticClass 构造函数是否在启动时已经初始化。但事实并非如此。当调试光标到达 main 方法中第一个 for 循环的断点时。我得到一个错误 "staticClass not loaded".
问题:有没有办法在 main 方法执行之前执行静态 class 构造函数?或者为什么它没有加载?启动时在 C# 中加载类似的静态 class。但是在 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);
}
}
}
你可以像这样初始化数组:
public static int myArray[] = new int[10];
为此,您需要使用静态静态初始化块(构造函数)。而不是
public staticClass()
{
myArray=new int[10];
}
使用
static
{
myArray=new int[10];
}
您现在的构造函数是实例构造函数。只要您使用 new 运算符,它就可以工作。参见 static constructor in c# and static initialization block (constructor) java