Ich brauche eine Variable in einer Klasse, die eine Instanz der Klasse "ClassA" ist, die aber auch die Schnittstelle "InterfaceI" implementiert.Membervariable, die Klasse A erweitern und eine Schnittstelle implementieren muss
Offensichtlich kann dies für den einen oder anderen leicht getan werden:
private ClassA mVariable;
private InterfaceI mVaraible;
aber wie kann ich das Objekt erzwingen sowohl erweitert KlasseA und implementiert InterfaceB? Etwas wie:
private <? extends ClassA & InterfaceI> mVaraible;
ist was ich brauche aber ich habe keine Ahnung von der Syntax oder ob es überhaupt möglich ist. Ich werde auch eine Get- und Set-Verfahren benötigen, aber das kann mit Generika erfolgen (ich glaube?)
Die offensichtliche Lösung ist
public class ClassB extends ClassA implements InterfaceI{
//whatever here
}
jedoch beide InterfaceI und KlasseA Teil eines externen libary sind, diese Bibliothek hat Klassen, die ClassA und InterfaceI erweitern und ich kann sie nicht bearbeiten, um sie ClassB zu erweitern, daher wird diese Lösung nicht funktionieren.
Sie können nicht, im Grunde. Sie können dies überprüfen, wenn Sie die Variable festlegen, und dann bei Bedarf ..., aber Sie können diese Einschränkung nicht für die Variable selbst ausdrücken, ohne die Klasse als generisch zu definieren. –
In Java8 gibt es etwas Magie, um Mehrfachvererbung oder eine Art Mix-In zu ermöglichen ... – Thufir
@Jon Skeet Wie würden Sie es überprüfen, wenn Sie die Variable setzen? – jtedit