2017-11-29 7 views
0

静的変数を使用して、ドライバが名前を使用してコンストラクタを使用したすべての時間のリストを作成する関数をプログラムに追加しようとしています。私が知る必要があるのは、これは、参照変数を(文字列として)リストに追加するためにJavaにアクセスする方法ですか? 擬似コード:メソッド内部から参照変数にアクセスする

public ClassName 
    String static list = ""; 
    Public ClassName (parameters){ 
     list += getReferenceVariable(); 
    } 

getReferenceVariableは、誰もが私が正しくあなたを理解していれば、あなたはすべての時間のリストを維持したい

+0

すべてのオブジェクトは 'のtoString()'メソッドを持っていますすべての生の型をString表現に変換することができます。それはあなたが意味することですか?あなたがしようとしていることの疑似コードを提供できますか? –

+0

擬似コードではなく実際の*コードを提供してください。私たちが擬似コードしか見ることができないときは、助けが非常に難しいです。 –

+0

はい、私はいくつかの擬似コードを提供しています(明確化のため) –

答えて

0

コンストラクタが呼び出されたことを実行する方法を知っていれば私が求めているものです、現在作成中の変数の名前を保存しますか?なぜなら、コンストラクタを使用するときには、new MyClass()でコンストラクタを呼び出し、obj.MyClass()ではなく、 "参照変数"がnoneであるからです。

(スタックトレースがあるので)、しかし、あなたは単にあなたと呼ばれる人を知りたい場合は、あなたが(しゃれが意図していない)in this threadが書かれたとして、単純にすることができ、 Thread.currentThread().getStackTrace()を使用して、(おそらく希望スタックフレームを選びます配列の最初の要素(index 0)はjava.lang.Thread.getStackTraceメソッドであり、2番目の(インデックス1)はコンストラクタであり、2はコンストラクタが呼び出された場所であるため、たとえば、このスタックトレースが対応するソースファイルの名前。 getFileName()

のドキュメント私は(現時点では可能ではない)私の最後でそれを試していないので、私はあなたに注意して使用するためのコードを与える:

public class MyClass(){ 
    MyClass(){ 
     callerName = Thread.currentThread().getStackTrace()[2].getFileName(); 
     ... // anything here 
    } 
} 
関連する問題