This question already has answers here:
How to quickly determine if a method is overridden in Java
(8个答案)
2年前关闭。
如何获取有关子类的信息,抽象的父类中的重写方法信息。
例:
如何获取有关Class c仅覆盖a2和Class的信息
B覆盖a1
//您可以检查返回类的主题,如果它是给定方法的A,则不会重写该方法,如果它是子类名称,则将其重写
编辑:
您也可以循环执行此操作:
(8个答案)
2年前关闭。
如何获取有关子类的信息,抽象的父类中的重写方法信息。
例:
abstract Class A()
{
protected void a1()
{
//some default content
}
protected void a2()
{
//some default content
}
}
class B extends A
{
@Override
public void a1()
{
//overridden content
}
}
Class C extends A
{
@Override
public void a2()
{
//overriden content
}
}
如何获取有关Class c仅覆盖a2和Class的信息
B覆盖a1
最佳答案
您可以执行以下操作(通过反射):
java.lang.Class class = B.class; // or any other child class
Class dec = class.getMethod("YourMEthodNAme").getDeclaringClass();
System.out.println(" Declaring class: " + dec.toString());
//您可以检查返回类的主题,如果它是给定方法的A,则不会重写该方法,如果它是子类名称,则将其重写
编辑:
您也可以循环执行此操作:
Method[] m = class.getMethods();
for(int i = 0; i < m.length; i++) {
// returns te declaring class
Class dec = m[i].getDeclaringClass();
// displays all methods
System.out.println("Method = " + m[i].toString());
System.out.println(" Declaring class: " + dec.toString());
}