Java 避免在参数化类型转换中出现未选中的转换警告

Java 避免在参数化类型转换中出现未选中的转换警告,java,casting,parameterized-types,Java,Casting,Parameterized Types,在类型转换参数化类型对象时,是否可以避免未选中的警告?例如,下面是我面临的实际情况,var1属于JComboBox类型,我希望将其存储在Map中,然后检索它,迫使我进入以下情况 JComboBox<RandomType> var1 = new JComboBox<RandomType>(); Object varRaw = var1; JComboBox<RandomType> var2 = (JComboBox<Random

在类型转换参数化类型对象时,是否可以避免
未选中的
警告?例如,下面是我面临的实际情况,
var1
属于
JComboBox
类型,我希望将其存储在
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);
    }
JComboBox var1=newjcombobox();
对象varRaw=var1;
JComboBox var2=(JComboBox)varRaw;
jComboxVar3;
if(JComboBox.class.isAssignableFrom(varRaw.getClass())){
var3=JComboBox.class.cast(varRaw);
}
常规强制转换和条件强制转换都会产生相同的警告


在这种情况下,不必使用
@SuppressWarnings
注释就可以避免该警告吗?

我的答案是否定的,没有更好的选择(我知道)。但我并不是权威人士,要证明其他任何选择都不会产生“虚假”警告似乎很难

我已经到了一个假设的程度,那就是周围有一些警告(是的,
@supershwarnings未经检查
,但我想知道是否有值得注意的事情发生)。出于同样的原因,我不赞成
javac-Xlint:unchecked
非标准选项

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

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

然后,她进入了一些难以理解的技术解释,让我不知所措。所以我不知道她说的话是否能证明什么


我只知道我不能证明独角兽是不存在的。但如果我没有注意到有人真正登记了他们的存在,我认为他们没有,这是公平的。也就是说,只需解决这个糟糕的技术问题,而不是愚蠢的独角兽。

您可以简单地将suppresswarnings(未选中)注释添加到方法中,尽管我实际上希望看到一个“正确”的答案。这是真的,我浏览了很多页面,指南和文档,但找不到清理对象的答案。我不得不说,这是一个我非常感兴趣的问题。