반응형
아래 오류는 static 함수에서 참조하려는 클래스가 닫혀 있어 접근을 하지 못한다는 오류입니다. 보통 내부에 있는 클래스를 static 함수가 참조할 때 에러가 납니다.
No enclosing instance of type Myani is accessible. Must qualify the allocation with an enclosing instance of type Myani (e.g. x.new A() where x is an instance of Myani).
▼ Static 변수가 붙은 변수나 클래스는 클래스가 메모리에 올라갈 때 자동으로 생성이 됩니다. 아래와 같은 경우 Myani 가 생성되기 전에 Anidog 클래스를 사용하기 때문입니다. 상위 클래스에 포함된 하위 클래스는 미리 생성하고 나서 사용이 가능합니다.
public class Myani {
class Anidog {
String kind;
int age;
String name;
Anidog(){
}
public void print(){
}
}
public static void main(String[] args) {
Anidog ad = new Anidog();
ad.kind = "강이지";
ad.age = 1;
ad.name = "소리";
ad.print();
}
}
▼ 이 문제를 해결하기 위해서는 하위 클래스에 static 을 붙여 미리 생성해 두면 되겠죠. 그럼 정상적으로 작동하게 됩니다.
public class Myani {
static class Anidog {
String kind;
int age;
String name;
Anidog(){
}
public void print(){
}
}
public static void main(String[] args) {
Anidog ad = new Anidog();
ad.kind = "강이지";
ad.age = 1;
ad.name = "소리";
ad.print();
}
}
▼ 또 다른 방법은 포함관계를 벗어나서 클래스를 밖으로 꺼내는 것입니다. 두개의 클래스 파일을 만들어도 되겠죠.
class Anidog {
String kind;
int age;
String name;
Anidog() {
}
public void print() {
}
}
public class Myani {
public static void main(String[] args) {
Anidog ad = new Anidog();
ad.kind = "강이지";
ad.age = 1;
ad.name = "소리";
ad.print();
}
}
반응형
'자바(JAVA)' 카테고리의 다른 글
자바(Java) 주석 Comments 소스 내에 작성하는 방법 (2) | 2024.01.25 |
---|---|
자바 Java 이클립스를 이용해서 자바 디버깅 하기 (10) | 2024.01.14 |
스프링 (Spring Boot) 메이븐 배포시 No Compiler is provided in this environment 에러 (7) | 2024.01.10 |
자바(Java) 세계 시간, 각국 현재 시각 얻어 오는 방법 (0) | 2023.12.19 |
자바 Java 다중상속 인터페이스 다루는 방법 (0) | 2023.12.03 |
자바(Java) 리스트(List,ArrayList) 이용하는 방법 (6) | 2023.11.23 |
자바(Java) public, private, protected, default 접근 제어자 차이점은 (3) | 2023.10.23 |
자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 (1) | 2023.10.12 |