在Java HashMap中,如何将泛型类型强制为子类

时间:2012-03-07 00:50:30

标签: java generics

我是一个跟踪东西及其主人的课程

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

如何强制S必须是某个类/接口的子类。

谢谢。

编辑:
我将Record修改为“class Record<Stuff,O>",其中Stuff是一个抽象类,并得到一个警告”类型参数Stuff正在隐藏类型Stuff。“

public class <S extends Stuff> Records<S,O>也会收到投诉请求。

3 个答案:

答案 0 :(得分:3)

public <S extends CharSequence> S foo(S s){
    return null;
}

S必须扩展(是CharSequence的子类)的状态。

答案 1 :(得分:2)

有一些extends和super关键字来定义Java泛型的边界。

 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);
} 

答案 2 :(得分:0)

我确信我们可以将父类或接口设置为set或map的键或值。 通过这样做,所有子类和实现的接口类都可以插入到set或map中。

HashMap<SuperClass, Interface>