-6

メソッドが呼び出されているかどうかを確認して、このメソッドの合計呼び出しを測定するためのカウンターを追加するにはどうすればよいですか?

明確にするために編集します。

私が持っていると仮定して

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

そして、メインメソッドで何かのインスタンスを3回作成しています。そのtoString()を3回呼び出した場合に必要な出力は、次のとおりです。

  • このメソッドが呼び出される時間は1番です
  • このメソッドが呼び出されている時間は2番です
  • このメソッドが呼び出される時間は3番です

mainではなく、クラス内およびToString()メソッド内にカウンターを正常に追加する必要があります。

前もって感謝します。

4

4 に答える 4

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; 
    }
}   
于 2012-11-25T13:07:20.913 に答える
1

2 つのオプションがあります...

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;
}
}
于 2012-11-25T13:10:51.233 に答える
1

これを行う最善の方法は、プライベート整数フィールドを使用することです

private int X_Counter = 0;

public void X(){
    X_Counter++;
    //Some Stuff
}
于 2012-11-25T13:11:28.107 に答える
0

それはあなたの目的が何であるかによって異なります。アプリケーション内で使用したい場合は、すべてのメソッド内にカウンターを配置して詳細を提供します。

ただし、外部ライブラリの場合、VisualVM や JConsole などのプロファイラーは、各メソッドの呼び出し回数を示します。

于 2012-11-25T13:10:40.497 に答える