Java - Generische statische Methoden

8

Ich habe versucht zu verstehen, ob es möglich ist, eine Methode zu erstellen, die basierend auf der Rückgabe-Klasse einen generischen Typ ableitet und eine statische Methode dieses generischen Typs aufruft.

d. Im Folgenden erstelle ich zwei Klassen, die beide die Methoden getInstances und getAllInstances implementieren. Ich versuche dann, die Methoden aus einem generischen Wrapper zu erstellen. Es scheint, dass die Superklassenmethode immer unabhängig vom Rückgabetyp ausgeführt wird.

Zum Beispiel

%Vor%

UnterklasseA

%Vor%

Wrapper - Zeigt das Problem an

%Vor%

Beim Ausführen von Wrapper erhalte ich den folgenden Fehler:

Ausnahme im Thread "main" java.lang.ClassCastException: ParentClass kann nicht in SubclassA umgewandelt werden     bei Wrapper.main (Wrapper.java:20)

Kann ich das in Java machen?

    
user2294382 18.04.2013, 09:52
quelle

3 Antworten

1

Ihr Ansatz ist falsch, es gibt keine Vorstellung von static Inheritance in Java, da die Vererbung immer im Kontext der Object-Ebene steht. Nur Membermethoden (nicht statisch) können von Unterklassen mit entsprechenden Zugriffsmodifikatoren vererbt werden.

Aktualisierung: Darüber hinaus scheint das Fabrikmuster in Ihrem Szenario geeigneter zu sein als das Anpassen von Generika zum Abrufen / Konstruieren bestimmter Klassenobjekte.

    
harsh 18.04.2013, 10:04
quelle
2

statische Methoden werden nicht überschrieben. Diese static Methoden gehören zu Class level

    
NPKR 18.04.2013 09:56
quelle
1

Nein, du kannst es nicht so machen. Damit es funktioniert, können Sie das Klassenobjekt übergeben:

%Vor%

Außerdem haben Sie in Ihrem Beispiel äquivalente statische Methoden in übergeordneten Klassen und Unterklassen. Die Methoden der Unterklasse überschreiben nicht die Methoden der Elternklasse, sie verstecken sie nur, und das ist fast sicher nicht das, was Sie wollen. Dieser Ansatz der Utility-Klasse geht um dies herum.

    
Tom McIntyre 18.04.2013 10:00
quelle

Tags und Links