チェックされていないキャストの警告が発生する状況があります。抑制警告を使用できることはわかっていますが、このスニペットのコーディング方法を変更することで回避する方法があると本能的に教えてくれます。しかし、私は解決策を表面化させることができないようで、新鮮な目で行うことができます.
//function removes elements from input, orders them and re-adds them
private <E extends Bus> int orderBuses(ArrayList<E> busList) {
Bus busToAdd = null;
...
busList.add((E) busToAdd);
return 0;
}
この関数は、それぞれが Bus を拡張するクラスを含むいくつかのリストで呼び出されます。Bus の一部である busToAdd でいくつかの関数が使用されるため、タイプ E を使用しても機能しません。
警告を抑制せずにこれを再構築する方法について何か提案はありますか?
編集: busList に E を使用できることがわかりましたが、割り当てたバスをキャストする必要があり、同じ警告が表示されます。バスの代わりにすべての用途に E を使用してみることができます。テストしたら更新します。