你好我正在研究一些有趣的代码,我想到了一个想法。
以下是一些简化的代码:
public interface SomeInterFace<T>
{
public List<T> doSomething();
}
现在,我有了另一个接口,应该为各种对象扩展这个接口,例如
public interface OtherInterface extends SomeInterface<Integer>,
SomeInterFace<String>, SomeInterface<Number>, ...
是否有可能以一种方式编写这个“OtherInterface”,它实现带有对象列表的“SomeInterface”?
答案 0 :(得分:4)
如果你能够为OtherInterface
处理任何类型的类型参数,那么正如其他人所建议的那样,你可以写:
public interface OtherInterface<T> extends SomeInterface<T>
但是,如果您只需要为特定的类型参数列表(例如SomeInterface
和String
)实现Number
,那么您就不能这样做。在编译时,SomeInterface<(anything)>
由于type erasure而变为SomeInterface
,并且在编译器确保您没有尝试进行任何不安全的转换(或者您)后,会为您插入转换我告诉它不要检查)。因此,您将尝试编写一个看起来像这样的类:
public interface OtherInterface extends SomeInterface, SomeInterface {
public List doSomething();
public List doSomething();
}
......由于显而易见的原因,这是无效的!
希望有所帮助!