找出.class文件是否实现了接口

时间:2015-11-18 07:54:07

标签: java javap

给定类文件的路径,如何确定它是否实现了某个接口?

我可以使用javap并解析输出,但可能有更聪明的方法。

我不想解析源代码,因为它可能不可用。我还应该注意,类文件的路径只能在运行时使用。

2 个答案:

答案 0 :(得分:0)

如果您需要从命令行检查它,那么javap是一个选项。

如果你需要在代码中检查它,这应该可行

interface MyInterface {
    ...
}
try {
    URL classUrl;
    classUrl = new URL(<path to the dir containg the .class file>); 

    URL[] classUrls = { classUrl };
    URLClassLoader ucl = new URLClassLoader(classUrls);

    Class clazz = ucl.loadClass(<your class name>); 
    if (MyInterface.class.isInstance(clazz.newInstance())){
        ...
    }
}
catch (Exception e){ System.out.println(e);}

答案 1 :(得分:-1)

让我们假设A类实现接口B

检查您是否可以使用InstanceOf运算符

if (NotifyPropertyChanged != null)
    NotifyPropertyChanged("FullName");

修改

A a = new A();
if(a instanceof B)  // here a is refernce variable holding object of class A
{
//do your thing
}