所以,是的,我已经看到了这个问题.但是,如果我有两个接口,IA以及IB,但我想一个参数的函数(或类的属性)是:
public void (<? extends IA, IB> someClass) {
//...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用泛型的情况下做到这一点?
编辑:
我意识到我真正想要的是Duck Typing,就像在Python中一样.我只是没说出正确的话.考虑到这一点,显然在Java中没有真正的方法可以做到这一点.我接受了这个答案,但随后意识到输入必须要有新的签名interface才能工作.但是,他确实符合我笨拙措辞的标准:).
此语法适用于您希望将某些内容传递到实现两个接口的方法,IA并且IB:
public <T extends IA & IB> void someMethod(T arg) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
对于类的成员变量:
public class Example<T extends IA & IB> {
private T value;
// ...
}
Run Code Online (Sandbox Code Playgroud)
(为什么你想在没有泛型的情况下这样做?).
interface IAandIB extends IA, IB { }
public void Foo(IAandIB someClass) {
//...
}
Run Code Online (Sandbox Code Playgroud)
由于接口可以扩展多个其他接口,因此您可以创建一个空的"虚拟接口"来扩展它们,并在需要时将其用作指定类型.
这工作,但它需要你修改实现每一个类不是一个包罗万象的解决方案IA,并IB让他们可以为这个方法,这是在某些情况下,最好恼人的,也不可能工作.不幸的是,如果没有泛型,我不知道有任何其他方法可以做到这一点.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |