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リストに追加してから削除します。そのため、何らかのキャストが必要です。
ありがとうございました。