在对参数化类型对象进行类型转换时是否可以避免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
注释时发出警告吗?
答案 0 :(得分:0)
我的答案是否定的,没有更好的选择(我知道)。但我并不是一个权威的来源,并且似乎很难证明其他任何选择都不会出现“假”错误。警告。
我已经到了假设周围有一些警告的较小的邪恶(是的,有@SupressWarnings unchecked
,但我想知道是否有值得注意的事情)。出于同样的原因,我会对javac -Xlint:unchecked
非标准选项
其他消息来源还表示,在所有情况下都不可能抑制未经检查的警告(特别是在处理不完全适应仿制药的图书馆时)。例如,作者在Generics tutorial中说
是否有可能消除所有未经检查的&#34;警告? - 几乎
然后她进入了一些不堪重负的技术解释。因此,我不知道她所说的内容是否可以证明是什么。
我只知道我无法证明独角兽不存在。但如果我没有注意到任何人实际注册他们的存在,我认为他们不会这样做是公平的。那个Falsafiability,只是采取这个邪恶的技术问题,而不是愚蠢的独角兽。