4

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

    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注释?

4

1 回答 1

0

我的回答是否定的,没有更好的选择(我知道)。但我不是权威消息来源,似乎难以证明所有其他选择都不会出现“错误”警告。

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

其他消息来源还说,不可能在所有情况下都禁止未经检查的警告(特别是在处理未完全适应泛型的库时)。例如在这个泛型教程中作者说

是否可以消除所有“未经检查”的警告?- 几乎

然后她进行了一些让我不知所措的笨拙的技术解释。因此,我不知道她所说的是否可以证明是什么。

我只知道我无法证明独角兽不存在。但是,如果我没有注意到任何人实际注册了他们的存在,那么我认为他们没有是公平的。这就是可证伪性,只要解决这个邪恶的技术问题而不是愚蠢的独角兽。

于 2015-08-03T23:26:38.747 回答