代码之家  ›  专栏  ›  技术社区  ›  Dhaval Parikh

如何获取抽象父类[duplicate]中子类的重写内容信息

  •  1
  • Dhaval Parikh  · 技术社区  · 7 年前

    如何在抽象父类中获取有关子类重写方法信息的信息。 例子:

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

    如何获取c类仅重写a2和类的信息

    1 回复  |  直到 7 年前
        1
  •  1
  •   tryingToLearn    7 年前

    您可以执行以下操作(通过参照):

    java.lang.Class class = B.class; // or any other child class
    Class dec = class.getMethod("YourMEthodNAme").getDeclaringClass();
    System.out.println(" Declaring class: " + dec.toString());
    

    //您可以检查返回类的anme,如果它是给定方法的,则方法不被重写,如果它是子类名,则被重写

    编辑:

    您也可以在循环中执行此操作:

          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());
          }