Wenn Sie eine Schnittstelle in Java implementieren, hindert nichts den Aufrufer daran, die von Ihnen bereitgestellte konkrete Implementierung zu prüfen, auf diese Klasse zu casten und Methoden aufzurufen, die nicht in der Schnittstelle enthalten sind. Ich glaube, das nennt man "böswilliges Downcasting".
Eine Möglichkeit, dies zu verhindern, besteht darin, einen Wrapper zu erstellen, der nur über die Methoden der Schnittstelle verfügt und die Implementierungsinstanz, an die er delegiert, nicht offenlegt. Abgesehen von der Reflexion auf private Variablen sollten Sie sicher sein.
Gibt es eine Möglichkeit, diese Art von Wrappern automatisch zu erstellen (zur Laufzeit, nicht mit einem Code-Erstellungs-Assistenten in der IDE, denn das erzeugt immer noch eine Quelldatei, die gepflegt werden muss)?