如何在java中转换对象时摆脱@SuppressWarnings(“unchecked”)

时间:2013-08-30 02:07:11

标签: java list map casting

Netbeans IDE建议在代码中的几行之前添加@SuppressWarnings(“unchecked”)。我不明白为什么。有人请告诉我哪里出错了?

private List<Object> processNames() {

    List<Object> values = new ArrayList<>();
    List<String> addedNames = new ArrayList<>();;
    List<String> droppedNames = new ArrayList<>();;
    Map<String, String> changedNames = new LinkedHashMap<>();


 //I skipped code that adds values into above lists and Map
    values.add(addedNames) ;
    values.add(droppedNames) ;
    values.add(changedNames) ;

    return values:

}

  private void applyChanges() {
    List<Object> values = processNames();
    @SuppressWarnings("unchecked")// Suggested by IDE
            List<String> AddedNames = (List<String>) values.get(0);
    @SuppressWarnings("unchecked")
            List<String> droppedNames = (List<String>) values.get(1);
    @SuppressWarnings("unchecked")
            Map<String, String> changedNames = (Map<String, String>) values.get(2); 

    }

1 个答案:

答案 0 :(得分:3)

您的IDE建议使用它,因为它无法确认您尝试检索的数据是您要将其转换为的类型(未选中的类型转换)。这个注释并不一定意味着将抛出Exception,它只是用于投射;换句话说,它用于抑制带注释元素的编译器警告。

在删除该注释方面,我建议您创建自己的自定义Object。 (似乎更适合维护1 List<CustomObject>个数据而不是4个单独的数据。