Ich frage mich, ob es einen besseren Weg gibt, dies zu tun. Ich möchte eine konkrete Methode in einer abstrakten Klasse haben, die die konkrete Instanz zurückgibt, die die abstrakte Klasse erweitert.Zurückgeben einer Instanz der konkreten untergeordneten Klasse aus einer Methode in der abstrakten übergeordneten Klasse
Hier ist, was ich tue jetzt:
abstract class ParentClass<T extends ParentClass> extends RelativeLayout {
...
public T aMethod(){
return (T)this;
}
}
und
class ChildClass1 extends ParentClass<ChildClass1>{
...
}
ich ich das T werfen müssen, da diese immer eine Instanz von T. nicht denken sollte, ist
Das wird brechen, wenn ich mich dazu entscheide: 'Klasse ChildClass2 erweitert ParentClass'. Jetzt weiß ich nicht genau, was Sie erreichen wollen oder warum Sie es erreichen wollen. Wenn Sie Ihre Frage entsprechend aktualisieren möchten, könnte ich Ihnen eine Antwort geben. –
@JoeC Was ich habe funktioniert, aber es verlangt von mir, 'dies' in der Elternklasse zu T zu werfen. Es sollte bereits wissen, dass 'dies' eine Instanz von T ist, also habe ich mich gefragt, ob es eine elegantere Lösung gab Das war einfach nicht schlau genug, um daran zu denken. Entweder für eine, bei der ich nicht casten musste, oder für eine, die die Kind-Instanz ohne generische Verwendung zurückgab. –
Versuchen Sie, was Sie mit der von mir vorgeschlagenen Unterklasse haben und lassen Sie mich wissen, ob es noch funktioniert. –