2016-04-25 8 views
0

Ich arbeite an einem Java-Projekt, wo ich Listen verschiedener Typen verwenden muss, die ich erstelle (Student, Schule ... zum Beispiel).Wie überschreibt man Java-Methoden?

Das Problem ist, dass ich brauche ein paar Liste Methoden mit diesem Typ zu verwenden (oder Klassen) wie „containe“ für Ex ...

ich versuche, diese Methoden zu überschreiben, indem meine eigene Liste (Arraylist oder Vektor Erstellen) das ist von Java-Liste erweitert ... aber ich habe viele Probleme, weil ich diese neue Liste (meine Liste) mit verschiedenen Typen verwenden möchte.

Dieses, wie ich myList von Java-Liste erweitert:

public class myList extends ArrayList<Object>{ 

public myList() { 
} 
    /***methods***/ 
} 

und dies, wie ich es verwenden:

public class newclass(){ 
     . 
     . 
     . 
    myList<student> sl=new myList<student>(); 
     . 
     . 

Aber es funktioniert nicht. Also, was ist der richtige Weg?

und danke.

+0

zwei sidenodes. Klassen beginnen mit Großbuchstaben gemäß der Java-Namenskonvention. Zweitens, mache diese benutzerdefinierte "Liste" nicht zu einem Raw-Typ, indem du das Generische als "Objekt" definierst, dies wird und kann später nur Probleme verursachen (was auch dein Problem ist). Machen Sie es 'MyList erweitert ArrayList '. – SomeJavaGuy

+1

Mögliche Duplikate von [Generische Klassen erweitern] (http://stackoverflow.com/questions/7255643/extending-generic-classes) –

+0

Ich weiß nicht, ob ich richtig verstanden habe, aber vielleicht ist alles, was Sie brauchen, vergleichbar in Ihrem Objekt , so sortiere und andere Methoden arbeiten ... Referenz: http://StackOverflow.com/a/3718515/2101088 – Rodrigo

Antwort

1

Was Sie suchen sind Generics:

public class myList<T> extends ArrayList<T> { 
... 
} 

So können Sie Ihre eigene Liste von was auch immer Sie wollen, wie diese erstellen:

myList<student> sl = new myList<>(); 

Antwort Update:

wie man zB den gleichen Typ zurückgibt d RKLÄRUNG -die anstelle des Typs Objekt ist

Antwort mit Ihrer Liste

myList<student> sl = new myList<>(); 
sl.add(new student()); 
student s = sl.get(0); 

Antwort mit einem ArrayList:

// But it works also with an ArrayList which implicitly mean that you have no need 
// to create your own implementation of an ArrayList 
List<student> sl = new ArrayList<>(); 
sl.add(new student()); 
student s = sl.get(0); 
+0

Können Sie bitte die übergeordnete 'contain' für einen Typ (Objekt)' Student' schreiben, die durch 'String definiert ist Vorname ; String lastName; '. –

+0

Könnten Sie bitte klarstellen, dass ich Ihre Frage nicht verstehe –

+1

Sie müssen die contains-Methode nicht überschreiben, implementieren Sie einfach Ihre equals-Methode in Ihrer Klasse Schüler –