2016-03-31 3 views
1

別の変数からオブジェクトに値を渡すことによって他のクラスの変数を呼び出すことができるのではないかと思いました。このような別の変数からオブジェクトに値を渡してクラス変数にアクセスするにはどうすればよいですか?

何か:

class Foo { 
    public String classVar = "hello"; 
} 

その後、私たちはクラスのオブジェクトを作る:

Foo bin = new Foo(); 

、私たちはでVARを使用することができます知っている:

bin.classVar; 

しかし、値classVarが別の文字列変数にあるとします。

Foo bin = new Foo();  
String var2 = "classVar"; 
bin.var2 ?????????? 

これを行うには?

+0

私は "ものと想定値『classVar』を理解することはできませんが、あなたがYOPが望むものを説明し.Can『別の文字列変数である』。 –

+0

何をしようとするか – Abdelhak

+0

使用するJavaリフレクション – Tokazio

答えて

0

あなたは、try-catchブロック内のコードは1行だけでリフレクションを使用してそれを達成以下のようにすることができます

try { 
     var2 = (String) bin.getClass().getField("classVar").get(bin); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

P.S.リフレクションを使用すると、よく制御されなければ危険になることがあります。しかし、慎重に処理すると、コーディングの柔軟性が驚くほど向上します。

2

変数名はJavaで静的に型付けされています。このように動的にすることはできません。本当に必要な場合は、反射を使用することができます。

+0

ありがとう、ありがとう、あなたは簡単な例を教えていただけますか? –

+0

@CYANCEVI http:// stackoverflow .com/questions/744226/java-reflection-how-to-get-the-a-variable –

0

反射を使用して取得することができます。

Foo bin = new Foo();  

ここで、Fooには変数「classVar」があります。

だから、あなたが実行します。

Field f1[] = Foo.class.getDeclaredFields(); 
for(Field f:f1) 
{ 
    if(f.getName().equals("classVar")) 
     System.out.println(f.get(bin)); //Get the value 
} 
関連する問題