如何实现通用接口列表
您好,我正在研究一些有趣的代码,并且思想已经跨越了我的想法。如何实现通用接口列表
下面是一些简单的代码:
public interface SomeInterFace<T>
{
public List<T> doSomething();
}
现在,我应该延长例如
public interface OtherInterface extends SomeInterface<Integer>,
SomeInterFace<String>, SomeInterface<Number>, ...
各种对象这一个别的接口有一个方法可行写这个“OtherInterface”以某种方式实现具有对象列表的“SomeInterface”?
如果你能处理任何类型参数的类型为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();
}
...这是无效的原因是显而易见的!
希望有帮助!
打我吧... +1 – 2013-02-22 18:14:31
哈。我想中西部地区最快的键盘。 :) – 2013-02-22 18:15:51
如果你看看我的问题,你的答案根本无法帮助我,因为我说过:“你的权利,但这意味着如果你实现接口”OtherInterface“与对象”A“(如Integer),你也可以实现“SomeInterface”与同一个对象,不是我需要的东西“ – ZeDonDino 2013-02-22 18:22:02
不幸的是,这对于java泛型是不可能的。不能让具有相同名称的多个方法使用不同的参数返回相同的泛型类型。这是由于在java中如何处理泛型。 – jtahlborn 2013-02-22 18:08:08
刚刚公共接口OtherInterface扩展SomeInterface''? –
PermGenError
2013-02-22 18:08:55
@PremGenError不认为这是可编译的,我不知道它是否有一些小的变化 – ZeDonDino 2013-02-22 18:10:25