通过java反射通过另一个类中的接口声明的对象的访问方法



在下面的代码中,我将printer1类型作为接口(IPrinter)类型,但实际上我希望它作为打印机类类型。

在JavaReflectionTrial.accessPrinter()中,我有2个将Slot作为参数,而不是打印机

是否可以将JavaReflectionTrial中的打印机作为打印机对象。

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();
  }
}

如果你有一个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);

由于Slot中的printer字段是公共的,您应该能够以正常方式获取实例。(slot.printer1)

相关内容

  • 没有找到相关文章

最新更新