k21*_*k21 2 java casting unchecked suppress-warnings
在我的Java程序中,我需要将类型的对象强制转换List<? extends SomeBaseClass>为List<SomeBaseClass>.如果我直接转换它,编译器会抱怨(显示警告)存在未经检查的强制转换.即使我可以确定所有对象都可以转换为它们的超类,编译器也不会注意到它并报告未经检查的强制转换.我该如何摆脱警告?除了@SupressWarnings("未选中")还有其他方法吗?
PS:代码工作正常,我只是好奇是否有更好的做事方式.
编辑:
解决方案:如果他确定将来不会更改列表,则应该只进行此类投射.但是当我们将单个对象从列表中取出时,最好将其抛出.
编辑器会抱怨,因为如果您SomeBaseClass在List<SomeBaseClass>列表中添加类型对象,则可能会"违反" List<? extends SomeBaseClass>列表中的内容.
在这个例子中,Number数字为SomeBaseClass:
List<? extends Number> doubles = new ArrayList<Double>();
List<Number> nums = (List<Number>) doubles;
nums.add(new Integer(5)); // no compiler complaints here...
// doubles now contains an Integer value!
Run Code Online (Sandbox Code Playgroud)
如果在你的情况下无法解决这个问题,我相信这@SuppressWarnings("unchecked")是你最好的选择.
| 归档时间: |
|
| 查看次数: |
3356 次 |
| 最近记录: |