测试对象是否实现接口

2024-01-26

以前可能有人问过这个问题,但快速搜索只提出了与 C# 相同的问题。看这里。 https://stackoverflow.com/questions/410227/test-if-object-implements-interface

我基本上想做的是检查给定对象是否实现给定接口。

我想出了一个解决方案,但这不够舒服,无法在 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;
}

EDIT: Ok, thanks for your answers. Especially to Damien Pollet and Noldorin, you made me rethink my design so I don't test for interfaces anymore.

The instanceof http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.20.2操作员的工作是在NullPointerException https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html安全的方式。例如:

 if ("" instanceof java.io.Serializable) {
     // it's true
 }

产生 true。自从:

 if (null instanceof AnyType) {
     // never reached
 }

产生假,则instanceof运算符是 null 安全的(您发布的代码不是)。

实例化是内置的、编译时安全的替代方案类#isInstance(对象) http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isInstance(java.lang.Object)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试对象是否实现接口 的相关文章

随机推荐

  • 从命令行(终端)启动 Pycharm

    我想尝试使用 PyCharm 进行明智的数学开发 通常我运行 eclipse 进行 sage 开发 但现在我想尝试使用 PyCharm 要使用 sage 环境变量启动 eclipse 在命令行中我通常执行以下操作 sage sh cd pa
  • 是否有相对 jQuery 选择器之类的东西?

    我有一个对 jquery 对象的引用this多变的 我正在寻找一种将子选择器应用于对象的方法 我在用着 this find table gt tbody gt tr gt td 但我的目标更像是 Value of this goes her
  • 全新 python 3.3.5 安装时出现 _socket 模块导入错误

    我安装了 python 3 35 并收到此错误 Traceback most recent call last File C Users Augusto PycharmProjects Plot Database py line 48 in
  • 那么属性在 void 类型上不存在,打字稿错误

    Code reset let alert this AlertCtrl create buttons ok this userservice passwordreset this email then res any gt if res s
  • 在 RESTful 架构中移动资源

    我有一个代表流程和活动的 RESTful Web 服务 每项活动都在一个且仅有一个进程内 我想表示当前所在进程与另一个进程之间的活动 移动 操作 我查看了论坛 发现人们建议使用不太标准的 MOVE 操作 其他人建议使用 PUT 但我不确定如
  • VS 2008 中的“多线程调试 DLL”运行时库选项到底在做什么?

    我在 VS 2008 中有一个创建 DLL 的解决方案 然后我在另一个应用程序中使用该 DLL 如果我进入 DLL 项目属性页并更改 DEBUG 构建的以下配置 则构建的 dll 将不再提供所需的功能 如果我把它改回来并重建 DLL 那么
  • 正则表达式中的最大十六进制值

    不使用u标志可以使用的十六进制范围是 x 00 x ff 但与u标记它达到 4 字节值 x 7fffffff x 00000000 x 7fffffff 所以如果我执行下面的代码 preg match x 00000000 x 800000
  • 遵守标准有多重要?

    对于像 C 这样的语言来说 标准的存在是必须的 好的编译器会尽最大努力 至少是大多数好的编译器 来遵守 许多编译器都有语言扩展 其中一些是标准允许的 有些则不允许 后一种例子有2个 gcc 的 typeof 微软的编译器允许纯虚函数声明同时
  • 将原始 Markdown 文本传递给 Jade

    我正在尝试我的第一个 Node jsExpress http expressjs com 应用程序 正如每个程序员都知道的那样 在测试新框架时您应该构建的第一件事就是博客 不管怎样 我想用 Markdown 写文章 然后在视图中渲染它 我看
  • 避免循环内的条件和函数调用

    我有一个看起来像这样的代码 void function int parameter for a big loop double a for a big loop double b double value if parameter 1 va
  • Python + MySQLdb 执行许多

    我正在使用 Python 及其 MySQLdb 模块将一些测量数据导入 Mysql 数据库 我们拥有的数据量相当大 目前大约有 250 MB 的 csv 文件 未来还会有更多 目前我使用cursor execute 导入一些元数据 这不是问
  • kubectl 端口转发和代理之间的区别

    kubectl proxy and kubectl port forwarding对我来说看起来相似且令人困惑 它们的主要区别和用例是什么 正如 How kubectl port forward works https stackoverf
  • 在 Java 中使用命名空间创建 XML 文档

    我正在寻找可以构造使用命名空间的 XML 文档的示例 Java 代码 我似乎无法用我的正常方式找到任何东西最喜欢的工具 http www google com所以希望有人能够帮助我 有多种方法可以做到这一点 仅举几个例子 Using XOM
  • 如何将react应用程序导出为纯静态html

    就像标题一样 我有一个由reactJS编写的登陆页面 它很小 我想导出为纯静态html 我已经研究过 但没有找到任何解决方案 I used webpack https webpack js org 生成静态 html 和 javascrip
  • Rails3 gem:acts_as_something

    我正在尝试将一些常见代码提取到 gem 中 我在想acts as something是简单重用的好策略 有没有一个很好的教程来讨论这个关于rails3 gems 的问题 我发现了几个讨论rails2的 例如http guides rubyo
  • 如何忽略转义\ python列表?

    我想忽略以下代码中的转义字符 gt gt gt a gt gt gt print a 我想输出像 有什么办法可以做到这一点吗 Using string escape unicode escape编码 参见Python 特定编码 http d
  • React - 动态渲染一定数量的组件

    我想根据用户获得的积分数显示组件星号 MUI 组件 的数量 this state points 我不知道该怎么做 import React Component from react import Star from material ui
  • 使用拼凑时如何减少图之间的空间

    大家好 我正在使用一个小数据框来构建一些图ggplot2 我的数据框是df我把它包括为dput 在最后 我有情节 当我使用时问题出现patchwork 我希望最终的图没有空格 以便中间的线 即轴 可以将图连接在一起 这是代码 library
  • ITfoxtec SAML 2.0:配置 AWS SSO 时出现 InvalidSignatureException

    我有一个小型测试应用程序 已成功与 Okta 作为 IdP 集成 我还设置了 AWS SSO 来充当 IdP 当我将应用程序切换为使用 AWS SSO 时 出现以下错误 ITfoxtec Identity Saml2 Cryptograph
  • 测试对象是否实现接口

    以前可能有人问过这个问题 但快速搜索只提出了与 C 相同的问题 看这里 https stackoverflow com questions 410227 test if object implements interface 我基本上想做的