Size: a a a

2021 November 10

t

ttldtor in codingteam
ну и да, класс чукча у тебя прям конкретный такой? Финальный?
источник

c

codingteam@cjr in codingteam
portnov
конкретный, но не обязательно финальный
источник

t

ttldtor in codingteam
Возможно, умение читать -- это не наследуемый признак)
источник

c

codingteam@cjr in codingteam
portnov
тоже вопрос не очевидный, да
источник

t

ttldtor in codingteam
можно это всё включить
источник

c

codingteam@cjr in codingteam
portnov
кажется, вариант с вспомогательными классами + интроспекцией самый рабочий. Что-то типа:

void tryReadWithAnybody(Class potentialReader) {
   Class adapter = loadClassByName(potentialReader.name + "ReaderAdapter");
   if (adapter != null) {
       adapter.invokeMethod("read");
   }
}
источник

c

codingteam@cjr in codingteam
portnov
ну, с обобщениями по вкусу
источник

t

ttldtor in codingteam
ух
источник

t

ttldtor in codingteam
я помню, писал расширения
источник

c

codingteam@cjr in codingteam
portnov
это работает, когда и интерфейс, и реализации в твоём продукте
источник

c

codingteam@cjr in codingteam
portnov
а вот для варианта, когда интерфейс объявлен в одной подключаемой сторонней библиотеке, а класс — в другой, так не выйдет :/
источник

c

codingteam@cjr in codingteam
portnov
единственный шанс, что библиотека, в которой интерфейс, заранее задумывалась как расширяемая и к ней можно какие-то плагины делать
источник

c

codingteam@cjr in codingteam
portnov
по той технологии, которую придумал автор библиотеки.
источник

t

ttldtor in codingteam
То есть, ты помечаешь классы аннотацией @Extension
Пишешь класслоадер, который пробегает по всему classpath и ищет классы с аннотацией Extension и грузит их
источник

c

codingteam@cjr in codingteam
portnov
ну что-то такое, да.
источник

t

ttldtor in codingteam
ну или  Spring
источник

t

ttldtor in codingteam
кхм
источник

t

ttldtor in codingteam
в моём тупом варианте приходилось писать ещё дефолтную реализацию-пустышку, чтобы не отрывало чего-нибудь
источник

t

ttldtor in codingteam
как если бы чукчу попросили почитать, а он ничего не делал
источник

c

codingteam@cjr in codingteam
portnov
печаль короче, надо решение по месту придумывать
источник