Collection<T>
で、メソッドbooleanremove(Object o)
がとして定義されていないのはなぜboolean remove(T o)
ですか?
私が持っているとき、私は例えばCollection<String> list
やりたくないと確信していlist.remove(new Date())
ます。
編集:すでに解決済み:Javaコレクションがメソッドを削除しないのはなぜですか?
質問2:
私がクラスを持っているとき:
class Value {
Object getValue() {
// return something;
}
}
次に、新しいクールリストを実装したいと思います。
class CoolList<T extends Value> implements Collection<T> {
// ...
@Override
public boolean remove(Object o) {
try {
T value = (T) o; // I mean the cast here
removeInternal(value);
} catch (ClassCastException e) {
return false;
}
}
}
警告(チェックされていないキャスト)を生成せず、@ SuspressWarningを使用せずにクリーンキャストを実行するにはどうすればよいですか?これも可能ですか?
編集:内部的には、リストで削除されたアイテムを復元できるようにしたいので、内部的にはList<T> deletedItems
。したがって、removeInternal()メソッドは、削除するアイテムを内部のdeletedItemsリストに追加してから削除します。そのため、何らかのキャストが必要です。
ありがとうございました。