java - 父方法可以检查哪个子方法调用了它吗?

标签 java class methods parent-child

我对 Java 相当陌生,我正在编写一个程序,该程序有两个使用相同父方法的子类,并且我想找到一种方法来跟踪哪个子类调用该方法。

示例:

public class Parent(){
    public static int ChildOneUses, ChildTwoUses;
    public void Example(){
        /* code */
        if(/*ChildOne called the method*/)
            ChildOneUses++;
        else if(/*ChildTwo called the method*/)
            ChildTwoUses++;
    }
}

public class ChildOne extends Parent(){
    /* code */
}
public class ChildTwo extends Parent(){
    /* code */
}

public static void main(String[] args){
    ChildOne ChildOne = new ChildOne();
    ChildTwo ChildTwo = new ChildTwo();

    ChildOne.Example();

    ChildTwo.Example();
    ChildTwo.Example();
}

/* If this code were to run, ChildOneUses would equal 1 and ChildTwoUses would equal 2 */

除了将父方法移动到每个子类以自行跟踪它们之外,我不确定这个问题是否有答案。

最佳答案

您可以在父类中设置 childType。

public class Parent(){
   public static int childOneUses, childTwoUses;
   public static int childType;

   public Parent(int childType) {
      this.childType = childType;
   }

   public void example(){
    if(childType == 1) {
        childOneUses++;
    }
    else if(childType == 2) {
        childTwoUses++;
    }
   }
}

public class ChildOne extends Parent(){
  public ChildOne() {
    super(1);
  }
}

public class ChildTwo extends Parent(){
  public ChildTwo() {
    super(2);
  }
}

public static void main(String[] args){
ChildOne childOne = new ChildOne();
ChildTwo childTwo = new ChildTwo();

childOne.example();

childTwo.example();
childTwo.example();
}

关于java - 父方法可以检查哪个子方法调用了它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307876/

相关文章:

java - 为什么是 hashCode() 和 getClass() native 方法?

java - MVEL 或 Drools 是否无法解析其类型为 Map<String,List<Object>> 的事实?

c++ - 微小的崩溃程序

c# - System.Beep 等效

Netbeans 7.4 为每个方法规则引入了 "10 lines max"。这个规则从何而来?

Java子类化: what is the method that will get triggered?

java - Weka 分类器准确度

java - 从servlet Java中的请求获取未选择的单选按钮

java - Maven:缺少 Artifact org.springframework:spring:jar:4.2.6

java - 从实现类中获取接口(interface)名称