在下面的代码中,我将printer1类型作为接口(IPrinter)类型,但实际上我希望它作为打印机类类型。
在JavaReflectionTrial.accessPrinter()中我有2个Slot作为参数而不是打印机
是否可以将JavaReflectionTrial中的打印机作为Printer对象。
interface IPrinter {
void enable();
}
class Printer implements Iprinter {
void enable() {
//doSomething;
}
}
class Slot {
public IPrinter printer1 = new Printer();
}
class JavaReflectionTrial {
accessPrinter(Slot slot) {
class cls=slot.getclass();
field[] fields=cls.getfields();
}
}
答案 0 :(得分:0)
如果您有一个Slot
对象并且通过反射想要获得其printer1
成员变量,那么您应该能够这样做:
Class<?> cls = slot.getClass();
Field field = cls.getDeclaredField("printer1");
// Get the value of the printer1 member variable in slot
Printer printer = (Printer)field.get(slot);
答案 1 :(得分:0)
由于Slot中的printer-field是公共的,因此您应该能够以正常方式获取实例。 (slot.printer1)