특정 클래스로 HashMap을 확장하는 방법은 무엇입니까?Java의 제네릭 대신 특정 클래스
public class TestMap<K, V> extends HashMap<K, V>
V를 정수로 지정합니다. V 대신 Integer를 작성하면 Integer 클래스를 재정 의하여 정수가 사용될 때 버그 (Integer i = 1
가 작동하지 않음)가 발생합니다. 어떻게이 문제를 해결 N
특정 클래스로 HashMap을 확장하는 방법은 무엇입니까?Java의 제네릭 대신 특정 클래스
public class TestMap<K, V> extends HashMap<K, V>
V를 정수로 지정합니다. V 대신 Integer를 작성하면 Integer 클래스를 재정 의하여 정수가 사용될 때 버그 (Integer i = 1
가 작동하지 않음)가 발생합니다. 어떻게이 문제를 해결 N
는 확장 클래스를 매개 변수화 만 키의 유형 선언 할 수 있습니다 : 당신이 경우, 측면 참고로
IntegerMap<String> integerByString = new IntegerMap<String>();
integerByString.put("0", 0);
integerByString.put("1", 1);
: 다음
class IntegerMap<K> extends HashMap<K, Integer> {}
당신이 할 수 있습니다 실제로 JDK 콜렉션 클래스를 확장하고 있지만 일반적으로 좋은 스타일로 간주되지 않습니다. ,
static <K> Map<K, Integer> prepMap() {
Map<K, Integer> theMap = new HashMap<>();
return theMap;
}
이것은 아마도 나쁜 아이디어입니다. 예 : http://www.ibm.com/developerworks/library/j-jtp02216/ –
작동합니다. 감사. 이제 나는 성가신'(Integer)'캐스트를 없앨 수 있습니다. – WVrock
정수 내가 = 1 않습니다 작업을 할 수 있습니다 어떤 방법으로 그것을 준비
아니면 방법 :
보통은 외부에서지도를 제어하는 클래스를 작성합니다 너 일하지 않는게 뭔지 보여? –
@SleimanJneidi 아마 그들은'java.lang.Integer'를 숨기는'TestMap ...'을하려고 시도하고있을 것입니다. –
Radiodef
Radiodef가 말하는 @SleimanJneidi는 사실입니다. – WVrock