0

次のように、整数変数の名前を含む文字列があります。

int branchControlFlow1 = 2;
String branchField = "branchControlFlow1";

変数の名前を含む文字列 (branchField) を使用して、変数 branchControlFlow1 の値にアクセスできますか?

変数「branchControlFlow1」は必ず整数型でなければなりません。

ご協力いただきありがとうございます!

4

2 に答える 2

4

リフレクションを使用して名前でフィールドを検索できます。

ただし、これを試みる場合は、マップが最適な選択である可能性が高くなります。

Map<String, Integer> map = ... 
map.put("branchControlFlow1", 2);
int num = map.get("branchControlFlow1");
于 2013-08-13T20:05:57.050 に答える
1

代わりに、整数のマップ/配列リストを実際に使用する必要があります。マップは値へのキー (文字列または任意のオブジェクト) であり、リスト (配列リストまたはリンクされたリスト) は int->Entry です。

そうでない場合は、ダーク マジックリフレクションに頼る必要があります。以下、この魔術について説明します。私は、頭痛、吐き気、感電、窒息、溺死、1600 年代の議員による強制溺死、例外、損害、偶発的または結果的、またはその他の問題について責任を負いません。

さらに深刻なことに、頻繁に呼び出されたり、タイム クリティカルなコードで呼び出されたりすると、パフォーマンスが大幅に低下します。必要なたびに値を取得するのではなく、取得した値を割り当てることで反射を最小限に抑えます。

まず、クラス オブジェクトのインスタンスを取得します。フィールドが というクラスにある場合はFooClass、次を使用します。

Class clazz=FooClass.class;
Field fd=clazz.getField(name);
int val=fd.getInt(myObjectOfFooClass);

スタック上のローカル変数に対してこれを行うことはできません。

于 2013-08-13T20:07:11.980 に答える