【问题标题】:How should I run code for 2 objects without warnings我应该如何在没有警告的情况下运行 2 个对象的代码
【发布时间】:2020-06-30 17:19:58
【问题描述】:

我想为两个对象都做 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 循环?

【问题讨论】:

    标签: java templates generics types


    【解决方案1】:

    数组和泛型不能很好地协同工作。你的数组没有类型参数(而且,真的,不能有它们),所以&lt;String, Number&gt; 部分?编译器试图告诉你:嗯,嗯....好吧,伙计。如果你这么说。我不会检查这个,如果你弄错了,ClassCastException 错误将在这段代码中出现在奇怪的地方——在任何地方都看不到强制转换操作的地方。

    解决方案是不要混合使用数组和泛型。鉴于泛型在 Java 中无处不在,这主要意味着您不应该在 Java 代码中使用数组(无论如何不要轻易使用;它们有自己的位置,尤其是数组或原语)。例如,这很好用:

    XYChart.Series<String, Number> firstSeries = ..., secondSeries = ...;
    for (XYChart.Series<String, Number> series : List.of(firstSeries, secondSeries)) {
       ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多