我熟悉C#,現在學習Java中的靜態類。 在下面的代碼中,我假設如果staticClass構造函數已在啓動時初始化。但事實並非如此。在主要方法中調試光標到第一個循環的斷點時。我收到一個錯誤「staticClass not loaded」。靜態類未加載
問題:有沒有一種方法可以在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);
}
}
}
嵌套類就像一個tp級別的類,只是它嵌套在另一個類中,並且可以訪問其包含的類私有成員。它的行爲與其他任何一類相同。因此,如果你從不在任何地方調用它,構造函數將不會被神奇地調用。 –
我不喜歡將類嵌入到另一個類中,但我認爲這是java中的唯一方法。靜態類可以單獨/不受限制嗎? –
當然,除了那種情況,你不需要static關鍵字。它只是成爲一個頂級課程,就像你的主課程一樣。我不確定你的意思是「這是唯一的方式」。唯一的辦法是做什麼? –