Как связать 2 интерфейса без реализации одного из них?
Вы не можете.Вы пытаетесь сделать автоматическую магию здесь.Не твори волшебство.Вы должны реализовать любой из них, несмотря ни на что.
Или вам придется реализовать собственную систему отражения (или AOP каким-либо образом) для создания классов на лету.Последнее не является тривиальным способом, и, как правило, это избыточное убийство и красный флаг чрезмерного инжиниринга, просто чтобы избежать реализации того, что является простым старым делегатом .
OTH, если вытолько хотел «выставить» подмножество методов, предоставляемых сторонним интерфейсом A (скажем, например, только методы получения), вы могли почти тривиально создать (с помощью старой доброй локтевой смазки или отражениябиблиотека) интерфейс B , который предоставляет только то подмножество методов, которое вы хотите.
interface DirtyThirdPartyInterface {StupidCrap getSomeStupidCrap ();void setStupidCrap ();}
interface MySanitizedInterface {StupidCrap getSomeStupidCrap ();// сеттер не является частью этого интерфейса}
Затем с помощью, скажем, Spring AOP или чего-то подобного или одной из нескольких библиотек отражений, вы можете автоматически сгенерировать реализацию MySanitizedInterface как AOPперехватчик, который просто передает вызов получателю (через отражение) получателю в стороннем интерфейсе.
Но, опять же, это много дерьма (не говоря уже о зависимостях сторонних библиотек), чтобы просто избежать того, какие суммыбыть простым ручным кодированием.Редко можно найти случай из реальной жизни, который оправдывает всю эту водопроводную малярию.Если бы я столкнулся с чем-то подобным, первое, что я подумал бы, это «красный флаг».YMMV конечно.