정적 열거 형 대 비 정적 열거 형
이 질문에 이미 답변이 있습니다.
Java에서 정적 열거 형과 비 정적 열거 형의 차이점은 무엇입니까? 두 가지 용도는 동일합니다.
맞습니까? 모든 정적 항목은 시작시 메모리에로드되고 비 정적 항목은 요청시로드 됩니까?그렇다면 어떤 방법이 더 낫습니까? 일부 데이터를 항상 메모리에 보관하거나 서버 리소스를 사용하여 매번로드 하시겠습니까?
public class Test {
public enum Enum1 {
A, B
}
public static enum Enum2 {
C, D
}
public static void main(String[] args) {
Enum1 a = Enum1.A;
Enum1 b = Enum1.B;
Enum2 c = Enum2.C;
Enum2 d = Enum2.D;
}
}
모든는 enum효과적 static입니다. 중첩 된 열거 형이있는 경우 static class.
모든 클래스는 느리게로드되지만 (열거 형 또는 기타)로드 될 때 모두 한 번에로드됩니다. 즉, 몇 가지 상수를로드 할 수 없지만 다른 상수는로드 할 수 없습니다 (클래스 초기화 중간 제외).
Java는 특정 수정자를 암시 적으로 허용하여 항상 선언 할 필요가 없도록합니다. 즉, 수정자를 추가한다고해서 동일한 내용을 더 긴 방법으로 작성하는 것 외에는 다른 작업이 반드시 수행되는 것은 아닙니다.
에 대한 기본 수정 자
클래스 필드 / 메서드 / 중첩 클래스-패키지 로컬, 비 최종, 비 정적
enum 및 중첩 된 enum-로컬, 최종 및 정적 패키지
인터페이스 필드- public static final
인터페이스 방법- public abstract
인터페이스의 중첩 클래스- public static, 비 최종
참고 : 동안 static에 대한 선택 사항입니다 enum항상 정적이다. 그러나 final항상 개념적인 경우에도 열거 형에 대해 설정할 수 없습니다 final(기술적으로 상수에 대해 재정의 된 구현이있는 하위 클래스를 가질 수 있음).
편집 : 당신이 사용할 필요가있는 유일한 장소 static와는 enum함께 import static열거의 값. @ man910 감사합니다
중첩 된 열거 형에 대해 이야기하는 경우 static기본적으로 암시 적 으로 사용됩니다.
Java 언어 사양 에 따르면 :
중첩 열거 형은 암시 적으로 정적입니다. 중첩 된 열거 형을 정적으로 명시 적으로 선언 할 수 있습니다.
모든 Enum은 암시 적으로 정적이므로 static키워드 를 작성할 필요가 없습니다 . 모든 인터페이스 메서드가 암시 적으로 공개되는 방식과 유사합니다.
으로 enums되어 inherently static, 필요가없고 사용하는 경우 차이가 없습니다 static-keyword에 enums.
열거 형이 클래스의 멤버이면 암시 적으로 정적입니다.
인터페이스에는 멤버 유형 선언이 포함될 수 있습니다. 인터페이스의 멤버 형식 선언은 암시 적으로 정적이며 공용입니다.
참고 URL : https://stackoverflow.com/questions/23127926/static-enum-vs-non-static-enum
'IT TIP' 카테고리의 다른 글
| Freemarker에서 null 값 처리 (0) | 2020.10.28 |
|---|---|
| JsonCreator를 사용하여 오버로드 된 생성자로 클래스를 역 직렬화하는 방법 (0) | 2020.10.28 |
| Firefox가 https로 리디렉션합니다. (0) | 2020.10.28 |
| Bash의 간단한 소켓 서버? (0) | 2020.10.28 |
| 'respond_to'대 'respond_to?'가 혼동 (0) | 2020.10.28 |