0

重複の可能性:
Javaの動的変数名:

以下のように、私が文字列を持っているとしましょう。

String s = "Hello";

ここで文字列を作成したいのですが、文字列の変数は「Hello」と呼ばれます。文字列の名前を「Hello」にするには、文字列にアクセスsして「Hello」という名前を取得する必要があるため、変数名として使用できます。以下は私が見たいものです。

String Hello = "I want to do this, But from Accessing String s So I KNOW that String s = Hello";

努力していただきありがとうございます。私はJavaの初心者なので、説明してください。:D

4

5 に答える 5

3

あなたがしようとしているのは、間接的なレイヤーを追加することです。Java/C/C++/Pascal/etc などの静的言語で変数に動的にアクセスすることはできません。

できることは、動的言語が使用する動的コンテキストをエミュレートすることです。たとえば、変数名と値を保持するマップを作成します。

Map<String,String> stringVars = new HashMap<String,String>();

// set a "variable"
stringVars.put("Hello", "value");

// get a "variable"
System.out.println(stringVars.get("Hello"));
于 2012-09-16T12:20:51.033 に答える
2

リフレクションの使用 (非推奨):

public class MainClass
{
    public String Hello = "I want to do this, But from Accessing String s So I KNOW that String s = Hello";

    public static void main(String[] args) throws Exception
    {
        MainClass m = new MainClass();

        String s = "Hello";
        String result = (String) MainClass.class.getField(s).get(m);
        System.out.println(result);
    }
}

出力:

I want to do this, But from Accessing String s So I KNOW that String s = Hello

代わりに、他の人が示したように地図を使用してください。

于 2012-09-16T12:31:45.860 に答える
0

文字列(「Hello」など)を取り、それを別の文字列にマップするMapを使用できますか(「これをやりたいのですが、文字列へのアクセスから、文字列s = Helloであることを知っています」など)。次のようなもの:

Map<String, String> stringMap = new HashMap<String, String>();
stringMap.put("Hello", "I want to do this, But from Accessing String s So I KNOW that String s = Hello");

次に、次のように呼び出して、マップ内のすべてのキー値 (「Hello」など) を見つけることができます。

Set<String> stringKeys = stringMap.keySet();

次のように、キー「Hello」に属する長い文字列を検索できます。

String longValue = stringMap.get("Hello");

これは、単純な String 値を使用して扱いにくい String 値を見つける方法です。String 値を他のタイプのオブジェクトにマップする Map を使用することもできることに注意してください。

于 2012-09-16T13:42:45.167 に答える
0

Javaではできません。

あなたができる唯一のことはmap、インターフェースの実装を使用することですHashMap。メソッドを使用するputと、特定の「名前」に値を「割り当てる」ことができます。key変数がスコープ内で一意の名前を持つように、名前は であり、マップ内で一意である必要があります。

を取得するには、適切な(例: string ) を引数として渡してメソッドをvalue呼び出します。getkey'Hello'

于 2012-09-16T12:20:44.730 に答える
0

Java では、オブジェクトへの参照の知識がなく、同じオブジェクトを参照する複数の変数が存在する可能性があるため、オブジェクトを指している変数 (参照) 名を取得することはできません。

一方、次のようなこともできます。しかし、私はどのように役立つかわかりません:

String s = "Hello";
Reference<String> hello = new SoftReference<String>(s);
String myStringAccessedWithHello = hello.get();
于 2012-09-16T12:28:56.197 に答える