这可能以前有人问过,但快速搜索只会给C#带来同样的问题。See here.
我主要想做的是检查给定的对象是否实现了给定的接口。
我想出了一个解决方案,但在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,你让我重新考虑我的设计,所以我不再测试接口。
发布于 2009-04-19 21:19:57
这应该可以做到:
public static boolean implementsInterface(Object object, Class interf){
return interf.isInstance(object);
}
例如,
java.io.Serializable.class.isInstance("a test string")
计算结果为true
。
发布于 2009-04-20 14:51:39
我更喜欢instanceof
if (obj instanceof SomeType) { ... }
它比SomeType.isInstance(obj)
更常见,也更易读。
发布于 2009-04-19 21:20:27
这很简单:
interf.isInstance(object)
https://stackoverflow.com/questions/766106
复制相似问题