2014-11-15 3 views
0

특정 클래스로 HashMap을 확장하는 방법은 무엇입니까?Java의 제네릭 대신 특정 클래스

public class TestMap<K, V> extends HashMap<K, V> 

V를 정수로 지정합니다. V 대신 Integer를 작성하면 Integer 클래스를 재정 의하여 정수가 사용될 때 버그 (Integer i = 1가 작동하지 않음)가 발생합니다. 어떻게이 문제를 해결 N

+0

정수 내가 = 1 않습니다 작업을 할 수 있습니다 어떤 방법으로 그것을 준비

class MapController<K> { Map<K, Integer> theMap; } 

아니면 방법 :

보통은 외부에서지도를 제어하는 ​​클래스를 작성합니다 너 일하지 않는게 뭔지 보여? –

+0

@SleimanJneidi 아마 그들은'java.lang.Integer'를 숨기는'TestMap ...'을하려고 시도하고있을 것입니다. – Radiodef

+0

Radiodef가 말하는 @SleimanJneidi는 사실입니다. – WVrock

답변

4

는 확장 클래스를 매개 변수화 만 키의 유형 선언 할 수 있습니다 : 당신이 경우, 측면 참고로

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; 
} 
+2

이것은 아마도 나쁜 아이디어입니다. 예 : http://www.ibm.com/developerworks/library/j-jtp02216/ –

+0

작동합니다. 감사. 이제 나는 성가신'(Integer)'캐스트를 없앨 수 있습니다. – WVrock

관련 문제