이 기사는 주로 아래에 자세히 설명 된대로 Java의 비트 도메인 대신 열거의 관련 내용을 연구합니다.
읽기 노트 "효과적인 자바 중국어 버전 2"
비트 도메인 표기법을 통해 비트 작업은 유니언 및 교차로와 같이 효과적으로 수행 할 수 있습니다. 그러나 비트 도메인에는 int 열거를 항상 밝히는 모든 단점이 있습니다. 비트 필드가 디지털 형태로 인쇄되면 간단한 int 열거 상수를 변환하는 것이 훨씬 어렵습니다. 비트 필드로 표시되는 모든 요소를 가로 지르는 쉬운 방법은 없습니다.
// 비트 필드 열거 상수 - ObsoleTepublic 클래스 테스트 {public static final byte style_bold = 1 << 0; // 1 공개 정적 최종 바이트 스타일 _italic = 1 << 1; // 2 공개 정적 최종 바이트 스타일 _underline = 1 << 2; // 4 공개 정적 최종 바이트 스타일 _strikethrough = 1 << 3; // 6 // 매개 변수는 비트 또는 0 이상의 스타일 _ 상수 공개 void applstyles (int styles) {...}}입니다.java.util 패키지는 열거 된 클래스를 제공하여 단일 열거 유형에서 추출한 다중 값의 여러 컬렉션을 효과적으로 표현하기위한 열거 클래스를 제공합니다. 이 클래스는 세트 인터페이스를 구현하여 다른 세트 구현에서 얻을 수있는 풍부한 기능, 유형 안전 및 상호 운용성을 제공합니다. 그러나 내부 특정 구현에서 각 열거 내용은 비트 벡터로 표시됩니다. 기본 열거 유형에 요소가 64 개 이하인 경우 대부분의 요소가 있습니다. 전체 열거는 단일 길이로 표시되므로 성능은 상단 도메인의 성능보다 낫습니다. Removeall 및 RetainAll과 같은 배치 처리는 비트 알고리즘을 사용하여 구현됩니다. 비트 도메인을 수동으로 교체하는 것과 같습니다. 그러나 수동 작업이 발생하기 쉬운 오류와 우아한 코드가 덜 오류를 피할 수 있습니다. 열거는이 어려운 작업을 수행하기 때문입니다. `
// 열거 - 비트 FieldSpublic 클래스 텍스트에 대한 최신 교체 {public enum style {bold, Italic, Underline, Strikethrough}; // 모든 세트가 전달 될 수 있지만 Enumset은 분명히 최고의 공개 공인 응용 프로그램 (set <style> 스타일) {System.out.println (Styles)입니다. } public void test () {applicstyles (enumset.of (style.bold, style.italic)); }} test() 및 출력 [BOLD, ITALIC] 을 실행하십시오.
Enumset 클래스는 비트 도메인의 단순성 및 성능 장점과 열거 유형의 모든 장점을 결합하므로 비트 도메인 표기법을 다시 사용할 이유가 없습니다. 통신 프로토콜을 구성하는 필드가 아니라면.
그러나 실제로, Enumset은 불의가 없다 - 불변의 열거를 만들 수는 없지만, 우리는 Enumset을 collections.unmodifiabibleSet으로 캡슐화 할 수 있지만 단순성과 성능은 모두 영향을받습니다.
public void test () {enumset <style> styles = enumset.of (style.bold, style.italic); set <style> unmodifiablestyle = collections.unmodifiableset (Styles); unmodifiablestyle.add (style.underline);}이런 식으로, UnmodifiableSet에 요소를 추가하면 java.lang.unsupportedOperationException을보고합니다.
요약
위의 내용은 Java의 비트 필드 코드 대신 열거에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!