2016-04-25 10 views
0

私は、私が作成するさまざまなタイプのリスト(学生、学校など)を使用する必要があるJavaプロジェクトに取り組んでいます。Javaのリストメソッドをオーバーライドする方法は?

問題は、私は例のための「containe」のように、このタイプ(またはクラス)といくつかのリストのメソッドを使用する必要があるということです...

私は自分のリスト(ArrayListのか、ベクトルを作成することで、このメソッドをオーバーライドしてみてください)これはJavaのリストから拡張されています...しかし、私はこの新しいリスト(私のリスト)を別のタイプで使用したいので、多くの問題があります。私はそれを使用する方法を

public class myList extends ArrayList<Object>{ 

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

と、この:

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

しかし、それは動作しません、私はJavaのリストからはmyListを拡張する方法を

これ。では、これを行う正しい方法は何でしょうか。

とありがとうございます。あなたが探しているものを

+0

2 sidenodes。クラスはJava命名規則に従って大文字で始まります。第2に、ジェネリックを 'Object'として定義することによってこのカスタム' List'を生タイプにしないでください。これは後で問題を引き起こすだけです(これもあなたの問題です)。それを 'MyList extends ArrayList 'にしてください。 – SomeJavaGuy

+1

[汎用クラスの拡張]の可能な複製(http://stackoverflow.com/questions/7255643/extending-generic-classes) –

+0

私が正しく理解しているかどうかわかりませんが、必要なのはあなたのオブジェクトに匹敵するものを実装することですので、並べ替えや他のメソッドが動作します...リファレンス:http://stackoverflow.com/a/3718515/2101088 – Rodrigo

答えて

1

Generics

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

あなたはこのように好きなの独自のリストを作成することができますこの方法:

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

レスポンス更新:

get -forの例 - dで同じ型を返すあなたのリストとの代わりにObject型

応答のArrayList

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

応答である-which eclaration :

// 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

あなたは '文字列'によって定義された型(オブジェクト) '学生'のために、ファーストネーム ;文字列lastName; '。 –

+0

あなたの質問を理解できませんでしたか –

+1

containsメソッドをオーバーライドする必要はありません。クラスのequalsメソッドを正しく実装するだけです。 –

関連する問題