如果我有字段本身,是否可以通過Java反射來獲取字段?這是一個原始的浮動(公共的,沒問題)。我不想用它的名字作爲String。通過反射獲取Java字段,但不是通過字符串名稱獲取Java字段
實施例:
public class TVset {
public float voltageA;
public float voltageB;
public float voltageC;
public TVset(...) {...} // constructor
public void function() {...} // it changes voltages
}
class Voltmeter{
Object theObject;
Field theField;
Voltmeter(Object obj) {
theObject = obj;
Class theFieldClass = obj.getClass();
Class theContainerClass = theFieldClass.getDeclaringClass();
Field theField = ??? // <-- here I don't want to use a String
}
float getVoltage() {
return theField.getFloat(theObject);
}
}
TVset tv1 = new TVset(...);
TVset tv2 = new TVset(...);
Voltmeter meter = new Voltmeter(tv1.voltageB);
meter.getVoltage();
tv1.function();
meter.getVoltage(); <- should reflect the changed voltage
tv1.function();
meter.getVoltage(); <- should reflect the changed voltage
...
的效果類似於通過引用傳遞浮子,但沒有包成一個包裝類。
我需要衡量不同的電視機不同的電壓,只是通過改變線路:
Voltmeter meter = new Voltmeter(tv1.voltageB);
別的東西,如:
Voltmeter meter = new Voltmeter(tv2.voltageA);
是否有可能與反思辦呢?
Thx
你能否詳細說一下「我不想用字符串」? – BalusC 2011-03-21 21:35:54
我剛剛發現編寫新的電壓表(tv2,「voltageA」)很難看,因爲我確切知道TVset中的哪些字段,並且我可以編寫新的(tv2.voltageA)。另外,如果我無意中編寫了新的(tv2.vltageA),編譯器會在運行之前對我大吼一聲。 – Amenhotep 2011-03-21 21:47:54