避免在参数化类型转换中未选中的强制转换警告

时间:2015-03-03 01:04:08

标签: java casting parameterized-types

在对参数化类型对象进行类型转换时是否可以避免unchecked警告?例如,下面是我面临的实际情况,var1类型为JComboBox<RandomType>我希望将其存储在Map中然后检索它,迫使我进入以下情况。

    JComboBox<RandomType> var1 = new JComboBox<RandomType>();

    Object varRaw = var1;

    JComboBox<RandomType> var2 = (JComboBox<RandomType>) varRaw;

    JComboBox<RandomType> var3;
    if (JComboBox.class.isAssignableFrom(varRaw.getClass())) {
        var3 = JComboBox.class.cast(varRaw);
    }

常规演员表和条件演员表都会产生相同的警告。

在这种情况下,甚至可以避免使用@SuppressWarnings注释时发出警告吗?

1 个答案:

答案 0 :(得分:0)

我的答案是否定的,没有更好的选择(我知道)。但我并不是一个权威的来源,并且似乎很难证明其他任何选择都不会出现“假”错误。警告。

我已经到了假设周围有一些警告的较小的邪恶(是的,有@SupressWarnings unchecked,但我想知道是否有值得注意的事情)。出于同样的原因,我会对javac -Xlint:unchecked非标准选项

表示不满

其他消息来源还表示,在所有情况下都不可能抑制未经检查的警告(特别是在处理不完全适应仿制药的图书馆时)。例如,作者在Generics tutorial中说

  

是否有可能消除所有未经检查的&#34;警告? - 几乎

然后她进入了一些不堪重负的技术解释。因此,我不知道她所说的内容是否可以证明是什么。

我只知道我无法证明独角兽不存在。但如果我没有注意到任何人实际注册他们的存在,我认为他们不会这样做是公平的。那个Falsafiability,只是采取这个邪恶的技术问题,而不是愚蠢的独角兽。