我得到了一个接口,就这样如何在Java中实现这种通用方法?
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是小号的子类。我如何优雅地实现这一点?有界的类型参数?我不明白。我只是删除类型参数一样
public class SReader implements Reader{
// the other stuff
}
这是什么界面和方法的目的是什么?我不明白你为什么要在Reader上指定一个类型参数,同时将一个Class对象传递给该方法。 – newacct
在我使用的库中有一个类似的接口。它用于从提供的输入流中反序列化特定的类。也许这只是一个故意的举动,像@Louis Wasserman下面所说的。 – George
好吧,我在想,如果一个'Reader'的实例只能接受一个特定的类,那么'type'参数总是相同的,为什么要在'read()'方法中使用Class对象呢?它可以在构造函数中传递,或者'Reader'的特定子类已经专门用于这种类型。 – newacct