如何在Java中实现这个泛型方法?

时间:2013-04-16 17:00:17

标签: java generics

我有一个像这样的界面

public interface Reader<T> {
    T read(Class<T> type,InputStream in);
}

这是一个通用接口,用于从流中读取 T 类型的对象。然后我知道我要处理的所有对象都是子类,比方说 S 。所以我创建了这个

public class SReader implements Reader<S>{
    S read(Class<S> type, InputStream in){
        // do the job here
    }
}

Class<S1>无法分配到Class<S>,即使 S1 S 的子类。我该如何优雅地实现这一点?有界类型参数?我不是这么想的。我唯一的解决方案是删除类型参数,如

public class SReader implements Reader{
    // the other stuff
}

1 个答案:

答案 0 :(得分:8)

这听起来像你想要的

public interface Reader<T> {
    T read(Class<? extends T> type,InputStream in);
}