如果我有字段本身,是否可以通过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