전역 상수를 게시하는 이러한 방법 중 더 나은 방법은 무엇입니까? 감사!!! 평소 규칙을 다음과Java로 전역 상수를 게시하는 더 좋은 방법은 무엇입니까?
Method 1: final class with public static final fields
public final class CNST{
private CNST(){}
public static final String C1;
public static final String C2;
static{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.C1);
//System.out.println(CNST.C2);
Method 2: singleton with enum
public enum CNST{
INST;
public final String C1;
public final String C2;
CNST{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.INST.C1);
//System.out.println(CNST.INST.C2);
왜 싱글 톤 오해의 소지가 있음을 깨닫기 위해 enum을 사용합니까? – Will
다음은 열거 형을 올바르게 사용하는 방법을 보여줍니다. http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html 열거 형은 유한 값 세트가있는 유형이며, 유효한 값 중 하나를 선택하십시오. 정적 최종 멤버 변수를 열거 형에 넣는 것이 유효한 Java이지만 클래스에서도 그렇게 할 수 있으므로 사용하는 것이 좋습니다. –
[Effective Java] (http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683/ref=sr_1_1?ie=UTF8&qid=1376207397&sr=8-1&keywords=effective)에 의해 지적되었습니다. + 자바). 싱글 톤을 실현하기 위해 enum을 채택하는 것이 바람직한 방법은 아닙니다. 물론 정규 클래스를 구현할 수는 없습니다. 그러나이 기사에서 지적한대로 [enum Singleton이 Java에서 더 나은 이유] (http : //javarevisited.blogspot .com/2012/07/why-enum-singleton-are-better-in-java.html) "을 참조하십시오. – Will