这可能以前曾被问过,但是快速搜索只提出了询问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,您让我重新考虑了设计,因此我不再测试接口。
该instanceof
运营商确实在工作NullPointerException
安全的方式。例如:
if ("" instanceof java.io.Serializable) {
// it's true
}
产生真实的。以来:
if (null instanceof AnyType) {
// never reached
}
产生false,instanceof
运算符为null安全(您发布的代码无效)。
instanceof
是Class#isInstance(Object)的内置,编译时安全的替代方法
有没有办法,我如何检测某个对象是否实现了某个接口?
问题内容: 如何检查某个类是否实现接口?当有: 如何检查是否实现接口? 该方法是否被正确覆盖,因此可以返回新创建的方法? 问题答案: 对于一个实例 然后做 对于Class实例
问题内容: 有没有办法确定对象是否是泛型类型的实例? 这显然行不通。还有其他选择吗?就像我想使用Java反射来实例化一个类,然后检查以确保它是通用类型。 问题答案: 进行此检查的唯一方法是,是否具有表示类型的对象:
# 11.5 测试一个值是否实现了某个接口 这是 11.3 类型断言中的一个特例:假定 v 是一个值,然后我们想测试它是否实现了 Stringer 接口,可以这样做: type Stringer interface { String() string } if sv, ok := v.(Stringer); ok { fmt.Printf("v implements Strin
问题内容: 有没有一种好的方法来检查对象o是否是内置的Python函数? 我知道我可以使用,例如 因为type(pow)是’builtin_function_or_method’。 但是有更好的方法吗? 问题答案: 类型模块: 不过,如果您仔细观察,就会发现它与您现在所做的没有什么不同。 因此,根据您的情况使用
问题内容: 我在运行时加载JSON配置文件,并使用接口定义其预期结构: 由于可以使用自动填充等功能,因此可以方便地访问各种属性。 问题: 有没有一种方法可以使用此声明来检查我加载的文件的正确性? 即我没有意外的属性? 问题答案: 没有。 当前,类型仅在开发和编译期间使用。类型信息不会以任何方式转换为已编译的JavaScript代码。