【问题标题】:Java Method for checking if a class extends another class? [duplicate]用于检查一个类是否扩展另一个类的Java方法? [复制]
【发布时间】:2012-11-24 00:23:52
【问题描述】:

是否有任何方法可以检查一个类是否扩展了另一个类? 上面的代码是sn-p

  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>
                        }
                    }
                }
            }
        }

【问题讨论】:

    标签: java extends


    【解决方案1】:

    假设您有课程AB。要确定 A 是否扩展 B,您可以使用 instanceof 运算符测试 A 的实例。这就足够了:

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

    【讨论】:

    • 我现在觉得有点愚蠢..即使我经常使用 instanceof,我也从来没有想过。反正。非常感谢
    • 这种方法的前提是A 总是有一个默认构造函数,并且如果存在这样的构造函数,它不会做一些耗时、消耗内存或破坏性的事情。 :) 请参阅How do I determine if a class extends another class in Java?
    • @vladr 感谢您的链接。 isAssignableFrom 是一种更好的方法。但这是我对这个问题的第一印象。例如,我给出了默认构造函数。 OP 应该使用类似new A(null, null, 0, "") 等的东西。
    • 你也可以使用 A.class.isAssignableFrom 来避免实例化类。
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多