Интерфейс форсирования Java в стороннем классе через анонимный класс
У меня есть некоторые сторонние bean-компоненты, которые имеют сигнатуры методов, которые очень хорошо вписываются в существующий интерфейс, но он не реализует интерфейс.
Теперь я хотел бы сделать что-то подобное, что не работает. Есть ли обходной путь?
someBean.setSomeInterface(
new Interface() extends SomeBeanThatMatchesAlotOfMethodsOfTheInterface {
});
2 ответа
Решение
Вы можете использовать шаблон декоратора для этого
Определите класс, который реализует ваш интерфейс, и во всех вызовах методов делегируйте someBean
реализация.
Я думаю, что все, что вы могли бы сделать, это расширить их класс (как вы сделали выше), а затем сказать, реализует.
Например.
public class MyImplementingClass extends SomeBeanThatMatchesAlotOfMethodsOfTheInterface implements MyInterface {
....
}
Конечно, основывая их код на вашем интерфейсе, возможно, что он может сломаться в будущем. Просто знайте об этом.