Javaコードでランタイムエラーが発生し、その背後にある理由を理解しようとしています。二重アスタリスクの間の2つの静的アクセス修飾子は、問題の項目です。コードは、これらの修飾子の有無にかかわらずコンパイルされます(もちろんアスタリスクは削除されます)。ただし、実行時には、修飾子が存在する場合にのみエラーなしで実行されます。どうしてこれなの?静的修飾子が存在しない場合に実行時に生成されるエラーは、コードの下に貼り付けられます。手伝ってくれてどうもありがとう!
コードは次のとおりです。
public class Blue {
public int[][] multiArray(int x, int y){
int[][] myArray = new int[x][y];
return myArray;
}
static Blue blueObject = new Blue();
public **static** int[][] one = blueObject.multiArray(3,3);
public **static** int[][] two = blueObject.multiArray(3,3);
public static void main(String[] args){
System.out.println("Hello world!");
}
}
静的アクセス修飾子なしで実行時に生成されたエラー:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at Blue.<init>(Blue.java:13)
at Blue.<clinit>(Blue.java:11)