2

我有一个像这样的界面

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

但即使S1SClass<S1>的子类,也不能分配给。我如何优雅地实现这一点?有界类型参数?我不明白这一点。我唯一的解决方案就是删除类型参数,例如Class<S>

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

1 回答 1

8

听起来你想要

public interface Reader<T> {
    T read(Class<? extends T> type,InputStream in);
}
于 2013-04-16T17:02:14.227 回答