如何在Java中实现这个通用方法?
我有一个这样的界面如何在Java中实现这个通用方法?,java,generics,Java,Generics,我有一个这样的界面 public interface Reader<T> { T read(Class<T> type,InputStream in); } 听起来像是你想要的 public interface Reader<T> { T read(Class<? extends T> type,InputStream in); } 公共接口读取器{ 看不懂(ClassI不允许更改原始接口方法签名。有其他方法吗?如果Foo扩展了
public interface Reader<T> {
T read(Class<T> type,InputStream in);
}
听起来像是你想要的
public interface Reader<T> {
T read(Class<? extends T> type,InputStream in);
}
公共接口读取器{
看不懂(ClassI不允许更改原始接口方法签名。有其他方法吗?如果Foo扩展了Bar
,并且您想从读卡器
读取条
,则不允许;您无法将类
传递给读卡器
。如果您不允许更改接口,则可能无法这是为了确保您不能读取子类而故意采取的措施。此接口和方法的用途是什么?我不明白您为什么要在读取器上指定一个类型参数,同时将类对象传递给该方法。我使用的一个库中有一个类似的接口。它用于反序列化特定的从提供的输入流中初始化。也许这只是一个故意的举动,就像下面@Louis Wasserman所说的。好吧,我在想,如果Reader
的实例只能接受一个特定的类,那么type
参数总是相同的,为什么要在read()中使用class对象呢
方法?它可以在构造函数中传递,或者Reader
的特定子类已经专门用于此类型。
public class SReader implements Reader{
// the other stuff
}
public interface Reader<T> {
T read(Class<? extends T> type,InputStream in);
}