当前位置: 首页 > 面试题库 >

测试对象是否实现接口

马祺
2023-03-14
问题内容

这可能以前曾被问过,但是快速搜索只提出了询问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代码。