这是将ArrayList从服务器发送到客户端的程序的一部分.我想删除有关此代码中最后一行的警告:
客户代码:
Socket s; (...) // A server is sending a list from the other side of the link. ois = new ObjectInputStream(s.getInputStream()); MyList = (ArrayList) ois.readObject();
MyVariable是一个具有一些属性的Java类.服务器正在创建一个ArrayList并用MyVariable变量填充它作为项目.然后它将完整列表发送给客户端.
我想知道为什么我会在那里发出警告以及如何完美编码以获得0警告.如果有可能我想避免使用"@SuppressWarnings("unchecked")".;)
谢谢,
路易斯
试试这个
Object obj = ois.readObject(); // Check it's an ArrayList if (obj instanceof ArrayList<?>) { // Get the List. ArrayList<?> al = (ArrayList<?>) obj; if (al.size() > 0) { // Iterate. for (int i = 0; i < al.size(); i++) { // Still not enough for a type. Object o = al.get(i); if (o instanceof MyVariable) { // Here we go! MyVariable v = (MyVariable) o; // use v. } } } }
要避免这种警告是不可能的.readObject()
返回一个Object.你需要施展它.并且转换为泛型类型将始终生成此类警告.
如果你想让你的代码尽可能干净,这是一个好主意,你应该尊重Java命名约定,并使变量名以小写字母开头.