Доступ к методу объекта, объявленного через интерфейс в другом классе с помощью Java-отражения. - PullRequest
0 голосов
/ 01 февраля 2012

В моем коде ниже я получаю тип printer1 как тип интерфейса (IPrinter), но я на самом деле хочу его как тип класса принтера.

В JavaReflectionTrial.accessPrinter () у меня есть 2, чтобы дать слот в качестве параметра, а неprinter

возможно ли получить принтер в 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();
  }
}

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Поскольку поле принтера в слоте является общедоступным, вы должны иметь возможность получить экземпляр обычным способом. (Slot.printer1)

0 голосов
/ 01 февраля 2012

Если у вас есть объект 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...