オブジェクトの名前をJavaの文字列と比較するには?
例えば:
class_name obj = new class_name();
オブジェクト名を文字列と比較したいobj
。それを行う正しい方法は何ですか?
オブジェクトの名前をJavaの文字列と比較するには?
例えば:
class_name obj = new class_name();
オブジェクト名を文字列と比較したいobj
。それを行う正しい方法は何ですか?
これは Java で直接行うことはできません。変数名は単にプログラマにとって便利なものであり、コードがコンパイルされた後は追跡されません。Map
代わりに、文字列識別子を対応するオブジェクトにマップする を使用できます。name
または、文字列を保持するフィールドをクラスに追加できます("obj"
例では):
ClassName obj = new ClassName("obj");
if (obj.getName().equals(...))
...
(より標準的な命名規則を想定していることに注意してください。)
ローカル変数にアクセスしたい場合、およびソース コードがjavac -g
デバッグ情報を保持するオプションを使用してコンパイルされている場合、 ASM などのバイトコード ライブラリを使用してこの詳細を取得できます。4.3を参照してください 。デバッグ
javac -g でコンパイルされたクラスには、ソース ファイルの名前、ソース行番号とバイトコード命令間のマッピング、およびソース コード内のローカル変数名とバイトコード内のローカル変数スロット間のマッピングが含まれます。このオプションの情報は、利用可能な場合、デバッガーおよび例外スタック トレースで使用されます。
クラス レベルの名前/フィールド変数を取得する場合は、Java リフレクション APIを使用できます。
==
オブジェクト参照を比較します。2 つのオペランドが同じオブジェクトを指しているかどうかを調べます。
2 つの文字列に同じ文字が含まれているかどうかを確認するには、 を使用して文字列を比較する必要がありますequals
。
あなたの具体的な問題に関しては、それはできません。