2011-02-09 9 views
0

私は多分あなたが私を助けることができますこれを把握できません。Java:配列パラメータの異なる型に1つのメソッドを使用

問題:次o = abc or def

public int foo1 (ArrayList<Object> o) { 
    o[0].compareTo(o[1]); 
} 


public class class1 implements Comparable<class1> { 
    public int compareTo(class1 o) { 
     //some code 
    } 
} 

public class class2 implements Comparable<class2> { 
    public int compareTo(class2 o) { 
     //some code 
    } 
} 

public class foo { 
    private ArrayList<Class1> abc = new ArrayList<Class1>();  
    private ArrayList<Class2> def = new ArrayList<Class2>(); 
} 

このコードは、私は、このエラーを取得して保持します:

The method compareTo(class1) is undefined for the type Object 

私は理由を理解しますが、私はできます見つからないorkarroundのように、コードを複製する必要はありません。なぜなら、より多くのArrayListオブジェクトとより長いコードがあるためです。

私はあなたのアイデアがあることを願っています。

問題が解決しました!解決策だった:ピーターLawreyによって

public <T extends Comparable<T>> int foo1 (ArrayList<T> o) { 
    return o.get(0).compareTo(o.get(1)); 
} 

+0

あなたの質問に回答されている場合は、あなたが「受け入れられた」として正しい答えをマークしなければならない(それに近い「受け入れる」ボタンまたは、そのような存在でなければなりません)、緑色のアイコンが表示され、ピーターは15の評判ポイントを獲得します。 –

答えて

0

implements Comparable<class1>

あなたはとてもあなたがそれ以外の場合は

抽象

のようにそれを実装させるインタフェースのすべてのメソッドの実装を提供する必要が実装されています
public class class1 implements Comparable<class1> { 

    public int compareTo(class1 o) { 
     //some code 
    } 
} 

public class class2 implements Comparable<class2> { 

    public int compareTo(class2 o) { 
     //some code 
    } 
} 
+0

申し訳ありません私の悪い今修正された – FGG

+0

更新............. –

0

あなたがそれによってオブジェクトを使用し、スーパークラスメソッドだ、あなたはそれが、サブクラスのメソッドが用意されていますと仮定することはできません。

+0

まあ私もそれを考え出した。問題を解決するためにはどんな挑戦ですか? – FGG

0

abcおよびdefをコンパイルして、警告なしで実行します。

あなたが方法が一般的なようにする必要があり
public <T extends Comparable<T>> int foo1 (ArrayList<T> o) { 
    return o.get(0).compareTo(o.get(1)); 
} 
+0

Tryedは動作しますが、まだ生のタイプを使用していることが示されていますが、これが問題ないかどうかはわかりません。 – FGG

+0

それは私のexamnsのためです – FGG

+0

ありがとうございました。もう一つ質問があります。実際には、配列自体を配列と比較するのではなく、配列内のオブジェクトにある型の新しいオブジェクトを比較します。このような汎用関数で配列オブジェクトの型のオブジェクトを取得するにはどうすればよいですか?感謝のヒープ – FGG

0

public <T extends Comparable<? super T>> int foo1 (ArrayList<T> o) { 
+0

トークンの構文エラー "extend"、、expected – FGG

+0

@FGGどのバージョンのJava? –

関連する問題