Предположим, у меня есть неизвестный интерфейс, и я хочу иметь возможность создать объект, который, когда пользователь вызывает некоторый метод из интерфейса на нем, возвращает что-то, указанное этим интерфейсом.
Например. имея объект Class class
, представляющий неизвестный Interface
, я хочу иметь возможность создать Object
, который ведет себя как нечто, что правильно реализует этот Interface
.
Например, скажем, я работаю над методом
public <E> E myMethod(Class<E> class){
...
return res;
}
Где class
- представление неизвестного интерфейса, например,
public <E> interface Writer{
public String write(String s);
}
Class<E> class = Writer.class;
Все, что я хочу сейчас, - это любой вызов, такой как
returnedFromMyMethod.write(s);
фактически выполняет работу, например, возвращает заданную строку
Я знаю, что нужно использовать рефлексию, потому что все это происходит во время выполнения, мы не знаем, что именно представляет собой интерфейс. Но не могу понять это. Есть идеи?
РЕДАКТИРОВАТЬ : во избежание недоразумений.
- Это все происходит во время выполнения. Я не знаю, что это за интерфейс.
Это может быть
Writer
, возможно Runnable
, Comparable
или любой
Другой. Это наверняка один интерфейс.
- Наш объект не
существует, у него нет ни одного из методов, которые мы хотим. Это как строить
новый объект (параметризованного типа) с нуля.
Итак, вопрос в том, чтобы создать объект, имитирующий , реализующий все методы из данного интерфейса