Java 열거 형의 이름을 지정하는 방법에 대한 “공식적인”권장 사항이 있습니까?
enum Protocol { HTTP, HTTPS, FTP }
또는
enum Protocols { HTTP, HTTPS, FTP }
.Net 세계에서 권장 사항은 비트 플래그를 나타내는 열거 형을 제외하고 단수를 사용하는 것입니다. Java에 비슷한 것이 있는지 궁금합니다.
.Net에만 해당되는 관련 질문 : 열거 형에 대해 단수 또는 복수?
답변
Java의 열거 형 (일반적으로 열거 형)은 단수 여야합니다. 생각은 여러 프로토콜을 선택하는 것이 아니라 값 목록에서 선택할 수있는 프로토콜 중 하나를 선택하는 것입니다.
복수가없는 것에 주목하십시오 : http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
답변
데이터베이스 또는 Java의 클래스에서 테이블 이름을 정의 할 때 열거 형에 대해 단수를 사용하는 것과 동일한 방법으로 최상의 옵션입니다. 사용 방법을 참조하십시오.
예제를 작성해 봅시다 :
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
단수형으로 하루 속성의 의도를 분명히 알 수 있습니다. “일”은이 약속이 열리는 요일입니다. 그렇지 않으면이 방법의 서명이 Day (Days day)로 설정되어 있고 약속이 하루 이상 발생할 수 있는지 많은 사람들이 궁금해 할 것입니다.
회사에서 48 시간 근무하는 경우 다음과 같이 정의 할 수 있습니다.
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
그렇게하면 근무일을 설정할 수 있습니다. 그러나 여전히 이상하게 보일 것이며 더 나은 옵션이 있으며 단수형을 사용하는 것입니다.
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
이제 실제로 열거 형의 의미를 보여줍니다. 일반적으로 모든 도메인에서 열거 형의 각 상수가 하나의 요소이기 때문에 열거 형에 단수를 사용하는 것이 가장 좋습니다.
.NET도 언급했습니다. .NET에서 “플래그”열거 형은 해당 열거 형을 매개 변수로 기대할 때 실제로 얻는 것은 해당 열거 형의 요소 목록 (정수로 저장 됨)임을 의미합니다.
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Java에서도 똑같이 할 수 있지만 열거 형은 여전히 단수입니다.
public enum Hue {
BLACK, RED, GREEN, BLUE;
private final Integer hue;
Hue() {
this.hue = 1 << this.ordinal();
}
public Integer toFlag() {
return this.hue;
}
}
public class MultiHue {
private Integer hues = 0;
public void addHue(Hue hue) {
this.hues |= hue.toFlag();
}
public boolean hasHue(Hue hue) {
return (this.hues & hue.toFlag()) != 0;
}
}
Java 로이 작업을 수행하는 데 더 쉽고 명확한 (더 많은 메모리를 사용하더라도) List를 사용하는 것입니다.