현재 Java에서 정적 클래스를 배우는 C#에 익숙합니다. 아래 코드에서 staticClass 생성자가 이미 시작될 때 초기화되었다고 가정했습니다. 하지만 그렇지 않습니다. 디버그 커서가 main 메소드의 첫 번째 for 루프의 중단 점에 도달 할 때. "staticClass가로드되지 않았습니다."라는 오류가 발생합니다.정적 클래스가로드되지 않았습니다.
질문 : main 메서드를 실행하기 전에 정적 클래스 생성자를 실행하는 방법이 있습니까? 왜로드되지 않았습니까? 유사한 정적 클래스가 시작시 C#에로드됩니다. 하지만 자바에서? 이것이 작동하지 않는 코드라고 생각하십시오. 자바 전문가로서 어떻게이 코드를 다시 작성할 수 있습니까? 수정해야하므로.
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 수준 클래스와 같습니다. 그것은 다른 클래스처럼 행동합니다. 그리고 생성자는 절대 호출하지 않으면 마술처럼 호출되지 않습니다. –
다른 클래스에 클래스를 포함하고 싶지 않지만 이것이 자바에서 유일한 방법이라고 생각합니다. 정적 클래스는 단독/중첩 될 수 있습니까? –
물론이 경우를 제외하고는 static 키워드가 필요하지 않습니다. Main 클래스처럼 최상위 클래스가됩니다. 나는 그것이 "유일한 길"이라는 것이 무슨 뜻인지 잘 모르겠습니다. 무엇을 할 수있는 유일한 방법은? –