私はクラスがあり、それは異なるタイプを含み、Iterable<Object>
インターフェイスを実装します。しかし、私が要素を比較できることは、私にとって非常に重要です。私は、Iterable<Object & Comparable<?>>
のようなものを書くことができないことを認識しています。どうすればいいですか?オブジェクトを匹敵するようにする方法
私はクラスに含まれるすべての単一の要素ことを、保証している:
- は
null
することはできません。 - 同じ型要素に匹敵します。
- 不変です。まあ、少なくとも私がチェックしている部分。
それは私がしていることを行うことができますので、私はちょうど、要素を比較したい、それはありません。
private static int hackCMP(Object val, Object val2)
throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
Method m = val.getClass().getMethod("compareTo", val.getClass());
return (Integer) m.invoke(val, val2);
}
私も要素がする必要が確実に別のクラスの間接コンストラクタへの入力としての要素を渡したいです匹敵する。この方法は次のとおりです。
public static <T extends Comparable<?>> Os of(final Iterator<T> values) {
'Iterable
あなたの署名を 'Iterable>'に変更してみませんか?すべてのオブジェクトが行うので、オブジェクトが 'Object'を拡張しなければならないことを明示的に述べることによって何も得られません。 –
@Dave Costa:Ty、これは私の問題を解決しました。 – Margus