This question already has answers here:
How to quickly determine if a method is overridden in Java
                                
                                    (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());
      }

07-24 15:48
查看更多