java - 反序列化 ArrayList:[unchecked] 需要未经检查的转换:ArrayList找到:数组列表
问题描述
我正在尝试序列化和反序列化 java 应用程序。它正在工作,但我想知道我是否正确地执行了这个过程。我正在序列化 ArrayList;这是正确的方法还是我应该序列化 Employee 类,但是考虑到我们可以有很多员工,我该怎么做呢?
我这样做的方式会导致我想摆脱这个错误:
serialTest.java:40:警告:[unchecked] 未经检查的转换 employees = (ArrayList) ois.readObject(); 必需:找到 ArrayList:ArrayList 1 警告
这是Employee类:包serialTest;导入 java.io.Serializable;
public class Employee implements Serializable {
int id;
String firstName;
String lastName;
public Employee(int id, String firstName, String lastName) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
这是主要课程:
package serialTest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class serialTest {
static ArrayList<Employee> employees = new ArrayList<>();
public static void main(String[] args) {
if (args.length > 0) {
deSerialize();
} else {
employees.add(new Employee(1, "John", "Doe"));
employees.add(new Employee(2, "Jane", "Doe"));
serialize();
}
}
private static void serialize() {
System.out.println("Serializing...");
try {
try (FileOutputStream fos = new FileOutputStream("employeeData"); ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(employees);
}
} catch (IOException ioe) {
}
}
private static void deSerialize() {
System.out.println("DeSerializing...");
try {
try (FileInputStream fis = new FileInputStream("employeeData");
ObjectInputStream ois = new ObjectInputStream(fis)) {
employees = (ArrayList) ois.readObject();
}
} catch (IOException ioe) {
System.out.println("File problems");
return;
} catch (ClassNotFoundException c) {
System.out.println("Class problems");
return;
}
for (Employee info : employees) {
System.out.println(info);
}
}
}
解决方案
您将不得不取消该警告。由于类型擦除,Java 不知道实际的泛型类型。
推荐阅读
- c++ - 在 Unreal C++ 中,为什么在未从 RAM 中删除的异步线程中将结构添加到 TArray?
- java - ModelMapper 设置嵌套对象的属性
- spring-mvc - 日文字符在 jsp 页面 Spring MVC 上未正确呈现
- javascript - 提示用户输入但在表单上显示输入
- python - player_image = image_list[self.anim_index] IndexError: 列表索引超出范围
- java - 如何从 Kotlin 代码在 Android Studio 中创建 UML 图?
- sql - 从一列中随机选择值并将它们粘贴到sql中的另一个表中
- vb.net - 最小化vb.net后如何在图片框上绘制而不丢失内容?
- ansible - 将常见的 set_facts 变量传递给多个剧本
- c# - 基于控制器为 Blazor 服务生成代码?