私はJavaで静的クラスを学んでいます。以下のコードで を実行したところ、起動時にstaticClassコンストラクターが既に初期化されていると仮定しました。そうではありません。デバッグカーソルがメインメソッドの最初の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);
}
}
}
ネストされたクラスは、別のクラスにネストされ、そのクラスのプライベートメンバーにアクセスできるという点を除いて、tpレベルのクラスと似ています。他のクラスと同様に動作します。したがって、そのコンストラクタは決してどこにも呼び出さなければ魔法のように呼び出されません。 –
私は別のクラスにクラスを埋め込むことはしませんが、これはjavaの唯一の方法だと思います。静的クラスは単独でもネストされなくてもかまいませんか? –
もちろん、静的キーワードは必要ありません。 Mainクラスのようにトップレベルのクラスになります。私はあなたが「それは唯一の方法だ」という言い方を確信していません。何をする唯一の方法は? –