繁体   English   中英

检查类是否实现接口

[英]Check if class implements interface

这是一个例子:

有一个基本类(A)处理许多不同的类(比如说B,C,D都扩展了P)。 在AI类中,需要调用以下函数:

 public void doSmth(P variable) {
      B b = (B)variable;
      b.getSomeImportantInfo();
 }

为此,我试图添加一个接口(I)并定义B,C,D来实现它。

麻烦的是,doSmth可以与所有此类(B,C,D)一起使用,而我不希望它们都实现此接口。 所以我正在尝试做这样的事情:

 public void doSmth(P variable) {
      if(variable instanceof I) {
           ((I)variable).getSomeImportantInfo();
      }
 }

但这不起作用,因为它说不能将变量强制转换为I。

如何实现所需的行为? 另外,我无法修改P并使其实现I。

我认为为时已晚,但是:

public static boolean isImplementsInterface(Class interfaze, Class clazz) {
    for (Class c : clazz.getInterfaces()) {
        if (c.equals(interfaze)) {
            return true;
        }
    }
    return false;
}

public static void main(String[] args) {
    System.out.println(isImplementsInterface(CharSequence.class, String.class));
}

我认为您不需要显式地将变量类型转换为I。检查完它是否为“ I”的实例后,直接调用该方法,让程序在运行时决定..具体取决于实际对象,参考变量参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM