Я пытаюсь решить упражнение с использованием Guice. Я сделал почти все остальное, но реализация этого метода сбивает меня с толку. Цель этого метода состоит в том, чтобы выступать в качестве регистратора регистраторов, и существует другой метод, который будет действовать в качестве сообщений диспетчеризации для правильного регистратора (@ named loggers). Я не слишком беспокоюсь о диспетчере, поскольку я знаю, как это сделать. Но метод регистратора ДОЛЖЕН использовать дженерики и отражения. Я плохо застрял здесь, и мой опыт Java почти не существует, когда дело доходит до использования отражений с помощью «java.lang.Class».Использование обобщений и отражений в Java для реализации метода интерфейса
код приведен ниже:
class MyManagerImpl implements MyMgr {
/* MyListener below is an interface */
public synchronized void regService(Class<? extends MyListener> loggerObj) {
...
...
...
}
public synchronized void dispatch(String msg, String logger) {
/* dispatches the messages to the correct logger which
* I know how to do
*
*/
}
}
Я понимаю, что приведенное выше выражение типа подстановочной поддержки говорит: «Класс содержит anytype, реализующие из, или расширяет, интерфейс MyListener». Но я совершенно новичок в использовании класса для анонимности. Можно ли увидеть пример, когда этот loggerObj фактически модифицируется/используется для вызова функции-члена.
Что вы подразумеваете под «телом внедрения»? – fge
Вы действительно собираетесь передать объект класса, например 'MyListener.class'? – markspace
Вы можете использовать 'listenerClass', чтобы делать много вещей в теле' doService'. Вам нужно уточнить, для чего предназначен этот метод. –