首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试对象是否实现了接口

测试对象是否实现了接口
EN

Stack Overflow用户
提问于 2009-04-19 21:14:15
回答 6查看 153.1K关注 0票数 156

这可能以前有人问过,但快速搜索只会给C#带来同样的问题。See here.

我主要想做的是检查给定的对象是否实现了给定的接口。

我想出了一个解决方案,但在if或case语句中频繁使用它并不够舒服,我想知道Java是否没有内置的解决方案。

代码语言:javascript
复制
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,你让我重新考虑我的设计,所以我不再测试接口。

EN

回答 6

Stack Overflow用户

发布于 2009-04-19 21:19:57

这应该可以做到:

代码语言:javascript
复制
public static boolean implementsInterface(Object object, Class interf){
    return interf.isInstance(object);
}

例如,

代码语言:javascript
复制
 java.io.Serializable.class.isInstance("a test string")

计算结果为true

票数 42
EN

Stack Overflow用户

发布于 2009-04-20 14:51:39

我更喜欢instanceof

代码语言:javascript
复制
if (obj instanceof SomeType) { ... }

它比SomeType.isInstance(obj)更常见,也更易读。

票数 9
EN

Stack Overflow用户

发布于 2009-04-19 21:20:27

这很简单:

代码语言:javascript
复制
   interf.isInstance(object)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/766106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档