우리는 다음과 같은 EnumMapExample.java
의 예에서와 같이 EnumMap<K,V>
인스턴스를 구성하는 습관이 있습니다 가능성이이 Java EnumSet 초기화 구문은 어떻게 작동합니까?
package test;
import java.util.EnumMap;
public class EnumMapExample {
enum TestEnum {SOME_VALUE, SOME_OTHER_VALUE}
private final EnumMap<TestEnum, String> myEnumMap = new EnumMap<TestEnum, String>(TestEnum.class) {
{
// How is this construct called?
put(TestEnum.SOME_VALUE, "someValue");
put(TestEnum.SOME_OTHER_VALUE, "someOtherValue");
}
};
public void printMyEnumMap() {
for (final TestEnum key : myEnumMap.keySet()) {
final String value = myEnumMap.get(key);
System.out.println("myEnumMap key: " + key + " has value " + value);
}
}
public static void main(final String[] args) {
new EnumMapExample().printMyEnumMap();
}
}
신속한 답변과 질문,하지만 난 내 구글은 찾을 수 없습니다위한 방법 private final EnumMap<TestEnum, String> myEnumMap
를 작성의 방법 2 (고안된) 열거 형을 호출하고 어떻게 작동합니까?
질문 정제 : 그래서 세미콜론 ;
전에 이중 중괄호 {{ }}
을 new EnumMap<K,V>(SomeEnum.class){{ /* initialization code */ }};
주를 호출하고 있습니다. 이중 괄호는 뭐지?
그 링크에 감사드립니다. "Initializer block"이라는 용어는 내가 찾고있는 것 같습니다. 'EnumMap'을 생성하는 것은 문제가 아니며, (이미 생성 된) 맵에 값을 추가하는 초기화 블록에 대해 궁금합니다. 질문에 대한 후속 질문 : 나는'새로운 EnumMap (SomeEnum.class) {{/ * initialization code * /}}'를 호출합니다. 세미콜론'; '앞에 이중 중괄호'{{}}'가 있습니다. 이중 괄호는 뭐지? –
drvdijk
그래, 나 지금 대답에 붙어있어 – awksp
또한, 나중에 참조하기 위해 "이중 중괄호 초기화"라고합니다. 나는 그것이 얼마나 광범위하게 사용되고 있는지, 또는 그것을 사용하려고 시도하는 것이 얼마나 현명한 지 잘 모르겠다. 그러나 자바의 흥미로운 작은 코너이다. – awksp