这个答案无疑存在于SO上,但我还没有找到正确的搜索词组合来提出它。
我有一个方法,我想采用A类参数,但也实现接口B.我该怎么做?
e.g。
public class MySubclassWithInterface extends MyClass implements MyInterface { }
public class MySubclass extends MyClass { }
public class MyInterfaceClass implements MyInterface { }
public class MyOtherSubclassWithInterface extends MyClass implements MyInterface { }
在上面的三个类中,我只希望我的方法接受MyClass
的对象并实现MyInterface
,换句话说,MySubclassWithInterface
或MyOthersubclassWithInterface
但不是MySubclass
或MyIntefaceClass
我非常羞怯地尝试了以下显然失败的事情:
public void myMethod( (MyClass MyInterface) parameterName) {
...
}
提前感谢您的帮助。
答案 0 :(得分:2)
您可以使用通用类型表达此内容,如以下签名所示:
<T extends MyClass & MyInterface> void m(T p)
规则是第一个类型必须是类或接口,任何以下参数必须是接口类型。