2012-08-04 27 views
5

在JavaScript中,您可以使用點表示法或括號表示法引用對象的屬性。這可以通過使用一個字符串變量如有用:Java托架符號?

var myObject = { hello: "world" }; 
var prop = "hello"; 

// both will output "world". 
console.log(myObject[ prop ]); 
console.log(myObject.hello); 

是否有類似的語法在Java訪問使用字符串變量,類似於JavaScript的括號符號的對象的屬性?

+2

最接近你的答案是通過[反射](http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getField(java.lang.String) ),但這可能不應該被建議。由於Java在打字方面相對嚴格,因此沒有直接的類比。 – oldrinb 2012-08-04 03:08:59

+0

更重要的是我認爲問題是「爲什麼?」。如果只是好奇心,那麼反射或使用正常的哈希映射就可以。如果不是,我們需要更好的問題背景。 – 2012-08-05 20:22:38

回答

1

不,在Java中沒有這樣的語法,但是有一個API(reflection)可以讓你做到這一點,儘管它不那麼直接。

1

在java中沒有類似的語法,或者沒有任何直接的方法來做到這一點。

的java 提供一個反射API,允許你查詢對象的屬性/在運行時使用界面Strings表示例如一個對象的屬性和方法。

您還可以在數據結構中存儲(鍵,值)屬性,如HashMap,將Strings映射到對象。

4

不,沒有。關於最接近的東西會使用反射,但至少可以說是笨重的。您必須查找Field,然後獲取實例的值。

Field property = myInstance.getClass().getDeclaredField("prop"); 
Object value = property.get(myInstance); 

不是你在找什麼,我知道,但它是最不幸的。

1

1.我不認爲在java中有這樣的語法。

2.但我寧願使用Key-Value對,那就是Map

3.Reflection API也可以在這種情況下使用。