Можно ли получить поле через отражение 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);
Можно ли это сделать с отражением?
Спасибо