Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何判断是否正在调用某个方法?_Java_Methods - Fatal编程技术网

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

Java 如何判断是否正在调用某个方法?,java,methods,Java,Methods,如何判断是否正在调用某个方法,以便添加计数器来测量此方法的总调用数 编辑以澄清 假设我有 class anything{ public String toString() { ++counter; return "the time this method is being called is number " +counter; } }//end class 我在main方法中创建了一个实例3次, 如果我调用它的toString三次,我想要的输出是: 调用此方法的时间是1 调用此方

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

编辑以澄清

假设我有

class anything{ 
public String toString() { 
++counter; 
return "the time this method is being called is number " +counter; 
} 
}//end class 
我在main方法中创建了一个实例3次, 如果我调用它的toString三次,我想要的输出是:

调用此方法的时间是1 调用此方法的时间是2 调用此方法的时间是第3次 我希望计数器成功地添加到类和ToString方法中,而不是main中


提前感谢。

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

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

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

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

您有两个选项

计算一个实例的消息数:

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

最好的方法是使用私有整数字段

private int X_Counter = 0;

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

将++计数器作为X的第一行?假设我得到了anythying{public String to String{++计数器;返回调用此方法的时间是number+counter;}}}//end class,并且我在主方法中创建了一个实例3次,如果我调用它3次,我想要的输出是这个方法被调用的时间是1次,这个方法被调用的时间是2次,这个方法被调用的时间是3次,我怎么做?感谢您的帮助。请编辑您的问题以反映这一点。我也修改了答案,几乎做到了这一点,最后一个障碍是你。