Интерфейс форсирования Java в стороннем классе через анонимный класс

У меня есть некоторые сторонние bean-компоненты, которые имеют сигнатуры методов, которые очень хорошо вписываются в существующий интерфейс, но он не реализует интерфейс.

Теперь я хотел бы сделать что-то подобное, что не работает. Есть ли обходной путь?

 someBean.setSomeInterface(
         new Interface() extends SomeBeanThatMatchesAlotOfMethodsOfTheInterface {
     });

2 ответа

Решение

Вы можете использовать шаблон декоратора для этого

Определите класс, который реализует ваш интерфейс, и во всех вызовах методов делегируйте someBean реализация.

Я думаю, что все, что вы могли бы сделать, это расширить их класс (как вы сделали выше), а затем сказать, реализует.

Например.

public class MyImplementingClass extends SomeBeanThatMatchesAlotOfMethodsOfTheInterface implements MyInterface {

....
}

Конечно, основывая их код на вашем интерфейсе, возможно, что он может сломаться в будущем. Просто знайте об этом.

Другие вопросы по тегам