如何实现通用接口列表

时间:2013-02-22 18:06:25

标签: java oop generics interface

你好我正在研究一些有趣的代码,我想到了一个想法。

以下是一些简化的代码:

public interface SomeInterFace<T>
{
    public List<T> doSomething();
}

现在,我有了另一个接口,应该为各种对象扩展这个接口,例如

public interface OtherInterface extends SomeInterface<Integer>, 
SomeInterFace<String>, SomeInterface<Number>, ...

是否有可能以一种方式编写这个“OtherInterface”,它实现带有对象列表的“SomeInterface”?

1 个答案:

答案 0 :(得分:4)

如果你能够为OtherInterface处理任何类型的类型参数,那么正如其他人所建议的那样,你可以写:

public interface OtherInterface<T> extends SomeInterface<T>

但是,如果您只需要为特定的类型参数列表(例如SomeInterfaceString)实现Number,那么您就不能这样做。在编译时,SomeInterface<(anything)>由于type erasure而变为SomeInterface,并且在编译器确保您没有尝试进行任何不安全的转换(或者您)后,会为您插入转换我告诉它不要检查)。因此,您将尝试编写一个看起来像这样的类:

public interface OtherInterface extends SomeInterface, SomeInterface {
    public List doSomething();
    public List doSomething();
}

......由于显而易见的原因,这是无效的!

希望有所帮助!