我有一种情况导致了未经检查的投射警告。我知道我可以使用禁止警告,但是我的直觉告诉我,有一种方法可以通过更改代码段的编码方式来避免这种情况。但是,我似乎无法解决该问题,并且可以换一组新的眼睛。
//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的类。在busToAdd上使用了Bus的一部分功能,因此使用E型将无法正常工作。
关于如何在不抑制警告的情况下进行重组的任何建议?
编辑:发现我可以将E用于busList,但最终不得不转换我分配给它的总线,这导致相同的警告。我可以尝试使用E代替Bus来进行所有用途,我将在对其进行测试后进行更新。
最佳答案
您应该能够在方法的主体中用Bus
替换对E
类型的引用。这样就不会发出警告。
例:
E busToAdd = busList.get(0);
// ...
busList.add(busToAdd);