当前位置: 首页 > 面试题库 >

如何确定某个类是否在Java中扩展了另一个类?

祁远
2023-03-14
问题内容

在Java中,我该如何确定类扩展了哪些类?

public class A{
}

public class B extends A{
}

public class C extends A{
}

public class D{
}

public class E extends B{
}

public class doSomething{

    public void myFunc(Class cls){
         //need to check that cls is a class which extends A
         //i.e. B, C and E but not A or D
    }
}

cls.getSuperClass()做我需要的吗?


问题答案:

getSuperClass()方法将失败,E因为它的直接超类不是A,而是B。宁可使用Class#isAssignableFrom()

public void myFunc(Class cls){
     //need to check that cls is a class which extends A
     //i.e. B, C and E but not A or D

     if (cls != A.class && A.class.isAssignableFrom(cls)) {
         // ...
     }
}


 类似资料:
  • 问题内容: 如何测试是否是的子类? 问题答案: 您是否在寻找:

  • 问题内容: 我正在学习Java,并且希望将自己的课堂变成可观察的课堂。 但是我已经有了它扩展了另一个类。 我该怎么办? 问题答案: 我建议避免完全使用该类,而应 定义事件特定的侦听器和相应的事件定义 。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。 强制您使用它来表示事件,然后使用来检查事件类型,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看j

  • 我有一个泛型类型K,我想验证K是否实现了接口可比性。这是我的代码: 但是代码不起作用。我不想将所有K限制为实现可比性。我已经有了另一个TreeMapVector相似度类。如果K实现了接口可比性,我将使用TreeMapVector相似度类返回结果。 你认为我如何能解决这个问题?谢了。

  • 问题内容: 如何将一个Java文件包含到另一个Java文件中? 例如:如果我有2个Java文件,则调用一个,然后调用一个。我怎么能包括成这样我可以从扩展类的 问题答案: 只需将两个文件放在同一目录中即可。这是一个例子: 人.java 学生.java 运行Student(因为它具有主要功能)会为我们带来所需的结果:

  • 我正在Eclipse中用Java编写一个程序。我有两个从超级类ViewPart扩展的类。现在我只想自动打开其中一个类(这意味着当我运行程序时),另一个类应该通过第一个类的UI上的按钮打开。但我不知道如何手动打开ViewPart类。 我现在试过了