나는 제대로 열거를 반복하기 위해 당신은 내가 평일과 주말 내 열거 일에 static
배열을 생성열거 형 생성자에서 생성 된 모든 열거 형 값의 배열에서 마지막 열거 형이 null입니까?
for (Days day : Days.values() {}
해야한다고 알고있다. 생성자에서 = new Days[] {SAT, SUN}
을 수행하여 적절한 Days 값을 채 웁니다. 이것들을 반복 할 때 의도 한대로 작동합니다.
그러나 Days의 모든 값에 대해 내 자신의 정적 배열을 만들 때 잃어 버렸습니다. 이전과 완전히 똑같은 방식으로 추가했습니다. 이 배열을 반복하면 내 주변 요소의 마지막 요소는 null
입니다. Days enum에서 테스트 할 허구의 날을 추가하기 시작한 곳에서 얼마나 많은 요소가 있더라도 결과는 같습니다. "해결책"은 그것을 만드는 것이었다 final
. 그러나 내가 잘못하고있는 것을 이해하고 싶습니다.
이것은 열거 생성자의 배열을 초기화하는 것이 나쁘다고합니다. 주중/주말 배열이 비슷한 점이 있습니까? 이게 실제로 큰 노 - 노입니까? enum 생성자에서 수행해야하는 다른 작업은 무엇입니까? 아니면 더 정확하게 사용해야합니까? 이 같은 일을 제외하고
enum Days {
MON("Monday");
String fullname;
private Days(String n) {fullname = n};
}
다른 사람이 설명 할 수있는 문서를 가리킬 수 있습니까? java enums 및/또는 해당 생성자에 대한 일부 선장의 명백한 정보가 부족할 수 있습니다.
대답을 검색하는 과정에서 나는 static {}
을 발견했습니다. 이것은 열거 형에서 정적 배열 초기화의 측면에서 좋은 방법일까요? 다른 대안이 있습니까?
편집 : 정확한 코드가 필요합니다.
public enum Days {
MON, TUE, WED, THU, FRI, SAT, SUN;
public static Days[] weekdays;
public static Days[] weekend;
public static Days[] all;
Days() {
weekdays = new Days[] {MON, TUE, WED, THU, FRI};
weekend = new Days[] {SAT, SUN};
all = new Days[] {MON, TUE, WED, THU, FRI, SAT, SUN};
}
}
String s = ""
for (Days d : Days.all) {
s += d.toString(); //d is null once it reaches the last item
}
코드를 설명하지 마십시오. 그것을 게시하십시오. 당신이받는 오류를 설명하거나 바꾸지 마십시오. 그들을 게시하십시오. –
배열이 초기화 된 코드를 공유 할 수 있습니까? –
문제의 원인이되는 코드를 게시 할 수 있습니까? (질문에서 일부 텍스트를 제거 할 수 있습니까? –