0

您好,我正在编写一些有趣的代码,我的脑海中闪过一个想法。

这是一些简化的代码:

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

现在,我得到了另一个接口,它应该为各种对象扩展这个接口

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

是否有可能以使用对象列表实现“SomeInterface”的方式编写此“OtherInterface”?

4

1 回答 1

4

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

public interface OtherInterface<T> extends SomeInterface<T>

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

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

...由于明显的原因,这是无效的!

希望有帮助!

于 2013-02-22T18:14:08.213 回答