类型检查参数是(子)类,也实现了接口

时间:2014-08-06 14:30:23

标签: java

这个答案无疑存在于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,换句话说,MySubclassWithInterfaceMyOthersubclassWithInterface但不是MySubclassMyIntefaceClass

我非常羞怯地尝试了以下显然失败的事情:

public void myMethod( (MyClass MyInterface) parameterName) {
...
}

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用通用类型表达此内容,如以下签名所示:

<T extends MyClass & MyInterface> void m(T p)

规则是第一个类型必须是类或接口,任何以下参数必须是接口类型。