对象到 ArrayList<String> 未经检查的强制转换

Posted

技术标签:

【中文标题】对象到 ArrayList<String> 未经检查的强制转换【英文标题】:object to ArrayList<String> unchecked cast 【发布时间】:2012-10-13 06:34:39 【问题描述】:

用 -Xlint 编译我的代码我发现了这个:

warning: [unchecked] unchecked cast
found   : java.lang.Object
required: java.util.ArrayList<java.lang.String>
                    ArrayList<String> msgData = (ArrayList<String>)element;

这是代码:

ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
Iterator i = msg.iterator();
while(i.hasNext()) 

    Object element = i.next();
    ArrayList<String> msgData = (ArrayList<String>)element;     

演员应该怎么做?

【问题讨论】:

【参考方案1】:

你的迭代器应该是这样的

Iterator<ArrayList<String>> i = msg.iterator();

顺便说一句,您可以使用 for-each 循环:

for (ArrayList<String> sublist : msg) 
    ....            

【讨论】:

【参考方案2】:

您的迭代器也需要一个类型,如下所示:

ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
Iterator<ArrayList<String>> i = msg.iterator();
while(i.hasNext()) 
    ArrayList<String> element = i.next();

顺便说一句,最好对接口进行编程,而不是对实现进行编程。因此,你会写:

List<List<String>> msg = new ArrayList<List<String>>();
//add some data to msg
Iterator<List<String>> i = msg.iterator();
while(i.hasNext()) 
    List<String> element = i.next();

【讨论】:

【参考方案3】:
ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
for (ArrayList<String> msgData : msg) 
   //do something

【讨论】:

以上是关于对象到 ArrayList<String> 未经检查的强制转换的主要内容,如果未能解决你的问题,请参考以下文章

对象到 ArrayList<String> 未经检查的强制转换

如何将对象类转换为 arrayList ? java [重复]

在Hashmap中获取arrayList的大小

如何把数值或者对象添加到ArrayList集合

无效的列类型 ~ 将 ArrayList<String> 发送到 pl/sql createdNameQuery

如何从 HashMap 中提取 ArrayList 并在 Java 中循环遍历它?