間違ったタイプのオブジェクトがcompareToメソッドに渡された場合、どのタイプの例外をスローする必要がありますか?
ClassCastException?
間違ったタイプのオブジェクトがcompareToメソッドに渡された場合、どのタイプの例外をスローする必要がありますか?
ClassCastException?
一般的な意味でIllegalArgumentException
は、渡された値が正しい値ではない場合です。
ただし、以下の@Tomの回答が示すClassCastException
ように、タイプが正しくない場合もあります。ただし、これを行うユーザーコードはまだ見つかりません。
ただし、より基本的にはcompareTo
、ジェネリックスでwithを使用している場合は、コンパイル時エラーになります。
このことを考慮:
public class Person implements Comparable<Person> {
private String name;
private int age;
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
上記の例で間違ったタイプが渡される可能性はどこにありますか?
当然のことながら、APIドキュメントでは、この場合にスローされる例外を指定しています。
ClassCastException-指定されたオブジェクトのタイプにより、このオブジェクトとの比較ができない場合。
ジェネリックスを使用していると仮定すると、誰かがraw型、リフレクション、またはその他の安全でない手法を使用してメソッドを呼び出そうとすると、この例外が自動的に発生します。