比較対象の配列を比較したい。最も簡単な方法は次のようです (詳細は示されていません)。
public class ArrayComparable implements Comparable<ArrayComparable>{
ArrayList<Comparable<?>> list = new ArrayList<Comparable<?>>();
@Override
public int compareTo(ArrayComparable ac) {
Iterator<Comparable<?>> itr = ac.list.iterator();
for(Comparable<?> l : list) {
Comparable<?> itrNext = itr.next();
if(itrNext.getClass() == l.getClass()) {
if(itrNext.compareTo(l)) {
//something
} else {
//other stuff
}
} else {
//some other thing
}
}
}
もちろん、ここでの問題は、compareTo
as initrNext.compareTo(l)
がエラーを出して機能しないことです:The method compareTo(capture#6-of ?) in the type Comparable<capture#6-of ?> is not applicable for the arguments (Comparable<capture#7-of ?>)
その理由は理解できます (方法に関する限り、リンゴとオレンジを比較している可能性があります)。一方で、物事を比較する前にクラスをチェックするので、そうではないことを知っています。
それで、私がこれを機能させる方法はありますか?比較対象の配列を比較することの健全性について心配する必要はありません。なぜなら、それをしたい正当な理由があるからです。
編集 - なぜ私はこのようなことをしたいのでしょうか。比較対象の配列が必要で、型が対応していて比較できる限り、各インデックスに何が含まれているかは気にしませんでした。次に、これらの配列間で一般的な辞書式の比較を行うことができます。(int,int)
このようにして、 for and (int, string)
、 and 、または必要なものを比較する(string, double, string)
必要はありません。型が一致していることを確認する (そして一致することができる) 限り、問題はありません。