可能以前曾有人问过这个问题,但是快速搜索只提出了询问C#的相同问题。看这里。
我基本上想要做的是检查给定对象是否实现了给定接口。
我有点想出了一个解决方案,但这还不够舒适,无法在if或case语句中频繁使用它,我想知道Java是否没有内置解决方案。
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
编辑:好的,谢谢您的回答。特别是对于Damien Pollet和Noldorin,您让我重新考虑了设计,因此不再测试接口。
3
如果抛出一个异常,您是否不能尝试强制转换并捕获异常(或者,即使Java与C#“ as”运算符类似,也要检查是否为空)?我是C#编码器,而不是Java编码器,所以我主要是在这里猜测,尽管我认为这种方法在任何OO语言中都是可行的。
—
Noldorin
在这种情况下,只有在不必关心性能的情况下,抛出异常才是一种好习惯。
—
拉法2014年
请原谅,但是这些答案在哪里让您重新考虑设计?即使删除了,它们又是什么?您能帮我吗@sebastiangeiger
—
ozanmuyes
@ozanmuyes对不起,我4年没有写Java了,不幸的是我不记得自己做了什么。
—
sebastiangeiger