2014-04-06 8 views
0

TreeMap 버전을 하위 클래스로 확장하여 단어를 효율적으로 인덱싱하려고하지만 올바른 구문이 무엇인지 확신 할 수 없습니다. 트리 맵의 클래스 정의는상위 클래스의 매개 변수가 클래스를 확장하는 클래스를 확장하는 경우

public class MyTreeMap<K extends Comparable<? super K>,V> extends AbstractMap<K,V> { 

가장 간단한 방법

public class TreeMapIndexer<K> extends MyTreeMap<K,LinkedList<Integer>> { 

의 클래스 확장과 같은 오류 "바운드 불일치 산출 : 타입 K가 경계에 대한 유효한 대체하지 않습니다를 매개 변수> 유형 MyTreeMap ".

내가 대신
public class TreeMapIndexer<K> extends 
MyTreeMap<K extends Comparable<? super K>, LinkedList<Integer>> { 

을 시도했지만 그 "토큰에 구문 오류"컴파일러 오류를 얻을 ", 예상"확장합니다. 잘못된 확장은 ""안에 있습니다.

같은 오류 메시지가 표시된 다른 스레드 (Generic Generics: "Syntax error on token "extends", , expected")가 있습니다. 그것은 나보다 약간 다른 상황 것으로 보인다,하지만 난 "토큰에 구문 오류"정확히 같은를 얻을 수

public class TreeMapIndexer<K> extends 
MyTreeMap<K, K extends Comparable<? super K>, LinkedList<Integer>> { 

을 시도 확장 "예상"컴파일러 메시지.

답변

1
class MyTreeMap<K extends Comparable<? super K>, V> 
extends AbstractMap<K, V> 

은 그래서 Kextends Comparable<? super K>의 바운드로 선언된다. 서브 클래스에서 같은 경계를 재 선언하면됩니다.

class TreeMapIndexer<K extends Comparable<? super K>> 
extends MyTreeMap<K, LinkedList<Integer>> 

그렇지 않으면 당신은 '불일치를 바인딩'컴파일 오류가 제한을 가지고 있지으로 하위 유형을 선언하려고합니다.

당신이 시도한 것은 거의 옳았습니다. 경계는 수퍼 클래스에 전달 된 인수가 아닌 제네릭 형식 선언에 있어야했습니다.

관련 문제