是否有可能避免 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
来避免警告?注释?
最佳答案
我的回答是否定的,没有更好的选择(据我所知)。但我不是权威消息来源,而且似乎很难证明所有其他选择都不会出现“错误”警告。
我已经到了假设周围有一些警告的较小邪恶的地步(是的,有 @SupressWarnings unchecked
但我想知道是否出现了值得注意的事情)。出于同样的原因,我不赞成 javac -Xlint:unchecked
非标准选项
其他消息来源还表示,不可能在所有情况下都禁止未经检查的警告(特别是在处理未完全适应泛型的库时)。例如在这个Generics tutorial作者说
Is it possible to eliminate all "unchecked" warnings? - Almost
然后她进行了一些让我不知所措的笨拙的技术解释。所以不知道她说的能不能证明什么。
我只知道我无法证明 unicorn 不存在。但是,如果我没有注意到任何人实际注册了他们的存在,那么我假设他们没有这样做是公平的。那是 Falsafiability , 只是解决这个邪恶的技术问题而不是愚蠢的 unicorn 。
关于java - 在参数化类型转换中避免未经检查的转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822326/