2012-11-24 58 views
1

是否有任何方法来检查一个类是否扩展了另一个类? 上面的代码片断用于检查一个类是否扩展另一个类的Java方法?

File[] fileList = file.listFiles(); 
     if(fileList != null){ 
      for(int i = 0; i < fileList.length; ++i){ 
       ClassName = fileList[i].getName(); 
       if (fileList[i].isFile() && (Class Extends Class2) && ClassName.endsWith(".class")){ 
        String ClassName1 = ClassName.split("\\.")[0]; 
        if (!ClassName1.contains("$")){ 
         if (packages != null){ 
         <Snippet> 
         } 
        } 
       } 
      } 
     } 

回答

1

比方说,你有类AB。要确定A是否扩展B,可以使用instanceof运算符测试A的实例。这已经足够了:

if((new A()) instanceof B) 
    return true; 
+0

现在我觉得有点笨......即使我使用很多instanceof,甚至没有跨过我的脑海。无论如何。多谢一个男人 –

+0

这种方法的前提是'A'总是有一个默认构造函数,并且如果存在这样的构造函数,它不会做一些耗时,耗费内存或者破坏性的东西。 :)请参阅[如何确定一个类是否扩展了Java中的另一个类?](http://stackoverflow.com/questions/4100281/how-do-i-determine-if-a-class-extends-another-class相反,在Java中)。 – vladr

+0

@vladr感谢您的链接。 'isAssignableFrom'是一个更好的方法。但这是我一开始就认为的问题。举例来说,我给了默认的构造函数。 OP应该使用类似'new A(null,null,0,“”“)等等。 – Juvanis

相关问题