问题描述
- Java for-each访问List集合显示错误: for-each 不适用于表达式类型
-
class ImageDropTargetListener extends DropTargetAdapter //这是内部类,有些变量已经定义好了 { public void drop(DropTargetDropEvent e) { e.acceptDrop(DnDConstants.ACTION_COPY); Transferable transfer = e.getTransferable(); DataFlavor[] flavor = transfer.getTransferDataFlavors(); for(int i=0; i<flavor.length; i++) { DataFlavor d = flavor[i]; try { if(d.equals(DataFlavor.javaFileListFlavor)) { List fileList = (List)transfer.getTransferData(d); for (Object obj : fileList) //问题报错在这 { showImage((File)obj, e); //已经定义好的方法 } } } catch (Exception event) { event.printStackTrace(); } e.dropComplete(true); } } }
错误: for-each 不适用于表达式类型
for (Object obj : fileList)
^
要求: 数组或 java.lang.Iterable
找到: List
哪位大神教一下,为什么会错……
难道是下面这句有问题???
List fileList = (List)transfer.getTransferData(d);
解决方案
Linux系统中的每个进程都有一个父进程(init进程除外);每个进程还有0个或多个子进程。在进程描述符中parent指针指向其父进程,还有一个名为children的子进程链表(父进程task_struct中的children相当于链表的表头)。
而我们可以使用list_for_each(/include/linux/list.h)来依次遍历访问子进程:
struct task_str......
答案就在这里:list_for_each
解决方案二:
: 这个运算符从未见过,换成别的符号试试。
解决方案三:
: 这个运算符从未见过,换成别的符号试试。
解决方案四:
for 改成foreach,好像是1.7才支持那种格式替代foreach
解决方案五:
楼主,说错了,你这个写法是对的,没有你具体的代码环境,目前看不出什么问题
解决方案六:
transfer.getTransferData
这个获得的数据类型应该不是List,所以才会进行一次类型转换是吧,如果获得的类型是一个集合的话,可以获得它的iterator,然后进行遍历这个样子,如果不是集合类型,那么类型转换出错肯定是必然的。
解决方案七:
transfer.getTransferData(d)这个原来是什么类型的?
解决方案八:
List fileList = (List)transfer.getTransferData(d);
这句话不管transfer.getTransferData(d)是什么对象,都能进行强制转换,编译是不会报错的,强制转换异常是运行时异常。
这样写应该是可以的,确认一下你的List全名是否是java.util.List
解决方案九:
List fileList = (List)transfer.getTransferData(d);
这句话不管transfer.getTransferData(d)是什么对象,都能进行强制转换,编译是不会报错的,强制转换异常是运行时异常。
这样写应该是可以的,确认一下你的List全名是否是java.util.List
解决方案十:
楼主,你确定引入的是import java.util.List;
???