Java 코드와 데이터베이스 또는 클라이언트 응용 프로그램 사이에 열거 형을 보내면 종종 열거 형 값을 읽고 문자열로 작성합니다. toString()
문자열을 연결할 때 암시 적으로 호출됩니다. 일부 열거 형에서 toString ()을 재정의하면 때로는
"<input type='checkbox' value='" + MY_CONST1 + "'>"
때로는 전화를 기억해야했습니다
"<input type='checkbox' value='" + MY_CONST1.name() + "'>"
오류가 발생하여 더 이상 그렇게하지 않습니다. 사실, 오버라이드 (override)하지 않는 어떤 충분한 클라이언트 코드에 주위에 던져, 당신은 결국 사람의 기대를 깰 것이기 때문에 열거 메소드를.
처럼, 자신의 새로운 방법 이름을 확인 public String text()
하거나 toEnglish()
또는 무엇 이건.
위와 같은 열거 형이 많으면 타이핑을 줄일 수있는 작은 도우미 기능이 있습니다.
public static String ucFirstLowerRest(String s) {
if ( (s == null) || (s.length() < 1) ) {
return s;
} else if (s.length() == 1) {
return s.toUpperCase();
} else {
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
}
항상 .toUpperCase () 또는 .toLowerCase ()를 호출하는 것은 쉽지만 대소 문자를 혼합하는 것은 까다로울 수 있습니다. "블루 드 프랑스"의 색상을 고려하십시오. 프랑스는 항상 대문자로 표시되므로 열거 형에 textLower () 메서드를 추가하려는 경우가 있습니다. 문장의 시작 부분, 문장 중간, 제목에서이 텍스트를 사용하면 단일 toString()
방법이 어떻게 부족 한지 알 수 있습니다 . Java 식별자에서 불법이거나 표준 키보드로 표시되지 않아 입력하기가 어려운 문자 또는 대소 문자가없는 문자 (한자 등)를 만지지 않습니다.
enum Color {
BLEU_DE_FRANCE {
@Override public String textTc() { return "Bleu De France"; }
@Override public String textLc() { return "bleu de France"; }
}
CAFE_NOIR {
@Override public String textTc() { return "Café Noir"; }
}
RED,
YELLOW,
GREEN;
// The text in title case
private final String textTc;
private Color() {
textTc = ucFirstLowerRest(this.toString());
}
// Title case
public String textTc() { return textTc; }
// For the middle of a sentence
public String textLc() { return textTc().toLowerCase(); }
// For the start of a sentence
public String textUcFirst() {
String lc = textLc();
return lc.substring(0, 1).toUpperCase() + lc.substring(1);
}
}
이것을 올바르게 사용하는 것은 어렵지 않습니다.
IllegalStateException(color1.textUcFirst() + " clashes horribly with " +
color2.textLc() + "!")
희망에 따라 대소 문자 열거 형 값을 사용하면 왜 실망하는지 알 수 있습니다. 밑줄 열거 형 상수가있는 모든 대문자를 유지해야하는 마지막 한 가지 이유는 가장 작은 놀라움의 원리를 따르는 것입니다. 사람들은 그것을 기대하기 때문에 다른 일을한다면 항상 자신을 설명하거나 코드를 잘못 사용하는 사람들을 대해야 할 것입니다.