【发布时间】:2013-12-15 01:14:45
【问题描述】:
这是从服务器向客户端发送 ArrayList 的程序的一部分。我想删除这段代码最后一行的警告:
客户端代码:
Socket s;
(...)
// A server is sending a list from the other side of the link.
ois = new ObjectInputStream(s.getInputStream());
MyList = (ArrayList<MyVariable>) ois.readObject();
MyVariable 是一个具有一些属性的 Java 类。服务器正在创建一个 ArrayList 并用 MyVariable 变量作为项目填充它。然后它将完整的列表发送给客户端。
我想知道为什么我会有一个警告,以及如何完美地编写代码以获得 0 个警告。如果可能的话,我想避免使用“@SuppressWarnings("unchecked")”。 ;)
谢谢,
路易斯
【问题讨论】:
-
通过套接字发送数组而不是集合。
(MyVariable[]) ois.readObject()是一个安全的演员。要将 Collection 转换为类型化数组,请使用list.toArray(new MyVariable[0])。要将数组转换为集合,请使用Arrays.asList方法。
标签: java arraylist casting warnings unchecked-cast