반응형
유형을 지정하지 않고 Java Enum을 어떻게 참조 할 수 있습니까?
다음과 같이 자체 열거 형을 정의하는 클래스가 있습니다.
public class Test
{
enum MyEnum{E1, E2};
public static void aTestMethod() {
Test2(E1); // << Gives "E1 cannot be resolved" in eclipse.
}
public Test2(MyEnum e) {}
}
MyEnum.E1을 지정하면 제대로 작동하지만 "E1"로 지정하고 싶습니다. 어떻게이 작업을 수행 할 수 있는지 또는이 작업을 수행하려면 다른 파일에서 정의해야합니까?
결론 : 가져 오기에 대한 구문을 올바르게 가져올 수 없었습니다. 여러 답변이 이것이 가능하다고 제안했기 때문에 필요한 구문을 제공하고 다른 구문을 찬성하는 것을 선택하겠습니다.
그건 그렇고, (정적 가져 오기가 작동하기 전에) 이것의 정말 이상한 부분, 열거 형을 사용하는 switch 문은 열거 형에 해당 유형이 접두사로 붙는 것을 허용하지 않았습니다. 코드가 필요했습니다. 머리를 다쳤어.
실제로 중첩 된 열거 형 의 정적 가져 오기 를 수행 할 수 있습니다 . 아래 코드는 잘 컴파일됩니다.
package mypackage;
import static mypackage.Test.MyEnum.*;
public class Test
{
enum MyEnum{E1, E2};
public static void aTestMethod() {
Test2(E1);
}
public static void Test2(MyEnum e) {}
}
중첩 된 클래스에서 정적 가져 오기를 수행 할 수 있습니다.
import static apackage.Test.Enum.*;
테스트 클래스는 가져올 수 있도록 패키지에 정의되어야합니다.
패키지 정의 Test
( IT WORKS ) :
package mypackage;
당신이 사용할 수있는:
import static mypackage.Test.MyEnum.*;
정의 된 패키지가 없으면 사용할 수 없습니다 ( 작동하지 않음 ) :
import static Test.MyEnum.*;
반응형
'program tip' 카테고리의 다른 글
time.Time을 문자열로 변환 (0) | 2020.10.19 |
---|---|
MVVM 라우팅 및 릴레이 명령 (0) | 2020.10.19 |
JavaScript에서 전역 변수를 피하는 방법은 무엇입니까? (0) | 2020.10.19 |
람다를 받아들이는 함수를 선언하는 방법은 무엇입니까? (0) | 2020.10.19 |
프로덕션 코드에서 console.log를 제거해야합니까? (0) | 2020.10.19 |