2012-03-07 3 views
1

I 해요 거즈를 추적하고 그들의 소유자를 유지하는 클래스, 어떻게 서브 클래스에게로 제네릭 형식을 적용하는

public class Record<S,O> { //S - generic stuff, O - generic owner 
    HashSet<S> allStuffs; 
    HashMap<S, O> whoOwnsWhat; 
    // 
} 

내가 그 특정 클래스의 서브 클래스이어야 S 적용 할 수있는 방법/인터페이스.

감사합니다.

편집 :..
내가 유형 매개 변수를 "물건이 추상 클래스를하고, 경고를 받았습니다 class Record<Stuff,O>"는"물건이 유형의 물건을 "숨어있을 레코드를 수정

public class <S extends Stuff> Records<S,O> 또한 컴파일러 불만을 얻을

+0

이제 다른 질문을하고 있습니다. 별도로 요청할 수도 있습니다. 또한 더 많은 코드가 새로운 오류를 디버깅하는 데 도움이 될 것이라고 생각합니다. – smessing

+0

클래스 수준과 메서드 수준에서 allStuffs를 정의하려고하기 때문에 생각합니다. 내 대답 좀 봐. – Damian

+0

공용 클래스 레코드 {...}. "공용 클래스 Records {...}"- suer로 컴파일되지 않습니다. 전체 코드를 표시하십시오. – Damian

답변

2

Java generics의 경계를 정의하는 확장 및 수퍼 키워드가 있습니다.

public class Record<S extends fooClassName,O> { 
HashSet allStuffs(fooClassName arg); // do not "override" S by putting S HashSet<S> allStuffs; 
HashMap whoOwnsWhat (fooClassName arg1, O arg2); 
} 
3
public <S extends CharSequence> S foo(S s){ 
    return null; 
} 

미국 S가 확장해야하는 클래스 (의 서브 클래스) CharSequence.

0

내가 wecan 있는지 그 자체입니다 부모 클래스 또는 인터페이스를 set 또는 map의 키 또는 값으로 사용합니다. 이렇게하면 모든 하위 클래스와 구현 된 인터페이스 클래스를 사용하여 세트 또는 맵에 삽입 할 수 있습니다.

HashMap<SuperClass, Interface> 
관련 문제