java - 我应该如何在没有警告的情况下运行 2 个对象的代码
问题描述
我想为这两个对象做 doStuff(),所以我这样做:
for (XYChart.Series<String, Number> series : new XYChart.Series[]{firstSeries, secondSeries}) {
series.doStuff();
}
但这给了我一个警告:
Unchecked assignment: 'javafx.scene.XYChart.Series' to 'javafx.scene.XYChart.Series'
我应该如何实际执行 for 循环?
解决方案
数组和泛型不能很好地协同工作。你的数组没有类型参数(而且,真的,不能有它们),所以<String, Number>
部分?编译器试图告诉你:嗯,嗯....好吧,伙计。如果你这么说。我不会检查这个,如果你弄错了,ClassCastException
这个代码中会在奇怪的地方出现错误——在任何地方都看不到强制转换操作的地方。
解决方案是不要混合使用数组和泛型。鉴于泛型在 Java 中无处不在,这主要意味着您不应该在 Java 代码中使用数组(无论如何不要轻易使用;它们有自己的位置,尤其是数组或原语)。例如,这很好用:
XYChart.Series<String, Number> firstSeries = ..., secondSeries = ...;
for (XYChart.Series<String, Number> series : List.of(firstSeries, secondSeries)) {
...
}
推荐阅读
- javascript - Hapi/Joi 替代方案 when is - 正则表达式测试
- android - 如何同时管理安卓经典蓝牙和蓝牙低功耗连接?
- java - 如何在列表视图中单击 imageview?
- python - 基于类别的聚合值
- oracle - 划分列 - oracle
- java - 从 Java 禁用 Docker 容器中的 IPv6
- javascript - Node js和mysql模块连接握手报错
- java - Saga 条目表/ Sagas 集合仍然为空
- javascript - 使用 Angular js 防止 microsoft edge 中的 OPEN 文件提示
- rust - 如何修复错误 E0277: trait bound `[usize]: std::marker::Sized` 不满足?