Ich bin neu in Java. Ich entwickle Programm für Android ähnlich App für iOS. Einer der Zwecke der App - erhalten Daten vom Server. Daten sind oft Array mit Wörterbücher wie "ID = 1", "Name = SomeName". Ich habe KlasseErstelle Instanz der Klasse oder Superklasse vom generischen Typ
class BaseArrayList<Type extends BaseItem> extends BaseItem {
public void processObject(Map<?,?> map) {
//......
//Some loop body
Type item = (Type) Type.create();
item.processObject(map);
//.....
}
Auch BaseItem haben Methode create():
public static BaseItem create() {
return new BaseItem();
}
Es funktioniert, aber für sublass von BaseItem -es funktioniert nicht. Ich habe festgestellt, dass statische Methoden nicht überschrieben werden.
Also, wie kann ich diese Aufgabe lösen: benutzerdefinierte Klasse in Array erstellen mit nur individuellen Fällen von BaseArrayList Schaffung wie:
new BaseArrayList<SomeSublassOfBaseItem>
Dieses Problem wird in ObjC wie dieses Problem gelöst -
[[memberClass alloc] init];
Typ item = Typ.newInstance(); –
Werfen Sie einen Blick auf "Warum erlaubt Java nicht das Überschreiben von statischen Methoden?" http://StackOverflow.com/Q/2223386/1250303 – Java42
@AlexeiKaigorodov Das wird nicht für einen beliebigen Typ funktionieren. – Jesper