如何判断是否正在调用方法?

时间:2012-11-25 13:06:18

标签: java methods

如何判断是否正在调用方法以便我可以添加一个计数器来测量此方法的总调用?

编辑以澄清。

假设我有

class anything{ 
public String toString() { 
++counter; 
return "the time this method is being called is number " +counter; 
} 
}//end class 

我正在主方法中创建任何东西的实例3次, 和我想要的输出,如果我调用它的toString()整整3次是这样的:

  
      
  • 调用此方法的时间是数字
  •   
  • 调用此方法的时间是数字2
  •   
  • 调用此方法的时间是3号
  •   

我希望计数器在类内部和ToString()方法内成功添加,而不是在main中。

提前致谢。

4 个答案:

答案 0 :(得分:3)

您可以使用私有实例变量计数器,您可以在每次调用方法时递增: -

public class Demo {
    private int counter = 0;

    public void counter() {
        ++counter;
    }
}

更新: -

根据您的编辑,您需要一个静态变量,它在实例之间共享。因此,一旦你改变了那个变量,就会改变所有实例。它基本上绑定到类而不是任何实例。

因此,您的代码应如下所示: -

class Anything {   // Your class name should start with uppercase letters.
    private static int counter = 0;

    public String toString() { 
        ++counter; 
        return "the time this method is being called is number " +counter; 
    }
}   

答案 1 :(得分:1)

你有两个选择......

计算一个实例的消息:

public class MyClass {
private int counter = 0;

public void counter() {
    counter++;
    // Do your stuff
}

public String getCounts(){
    return "The time the method is being called is number " +counter;
}
}

或计算所有已创建实例的全局调用:

public class MyClass {
private static int counter = 0;

public void counter() {
    counter++;
    // Do your stuff
}
public static String getCounts(){
    return "the time the method is being called is number " +counter;
}
}

答案 2 :(得分:1)

执行此操作的最佳方法是使用私有整数字段

private int X_Counter = 0;

public void X(){
    X_Counter++;
    //Some Stuff
}

答案 3 :(得分:0)

这取决于你的目的是什么。如果在你的应用程序中,你想要使用它,那么在每个方法中都有一个计数器来提供详细信息。

但是如果它是一个外部库,那么像VisualVM或JConsole这样的分析器将为你提供每种方法的调用次数。