反序列化文件,然后将内容存储在 ArrayList<String> 中。 (java)
deserialise file, then store content in ArrayList<String>. (java)
假设 serialise.bin 是一个充满单词的文件,并且在序列化时是一个 ArrayList
public static ArrayList<String> deserialise(){
ArrayList<String> words= new ArrayList<String>();
File serial = new File("serialise.bin");
try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(serial))){
System.out.println(in.readObject()); //prints out the content
//I want to store the content in to an ArrayList<String>
}catch(Exception e){
e.getMessage();
}
return words;
}
我希望能够反序列化 "serialise.bin" 文件并将内容存储在 ArrayList
将它转换为 ArrayList<String>
,就像 in.readObject()
做 return 和 Object
一样,并将它分配给 words
:
@SuppressWarnings("unchecked")
public static ArrayList<String> deserialise() {
// Do not create a new ArrayList, you get
// it from "readObject()", otherwise you just
// overwrite it.
ArrayList<String> words = null;
File serial = new File("serialise.bin");
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(serial))) {
// Cast from "Object" to "ArrayList<String>", mandatory
words = (ArrayList<String>) in.readObject();
} catch(Exception e) {
e.printStackTrace();
}
return words;
}
可以添加注解 @SuppressWarnings("unchecked")
来抑制类型安全警告。发生这种情况是因为您必须将 Object
转换为 generic 类型。使用 Java 的 type erasure 编译器无法知道转换在运行时是否类型安全。 Here 是另一个 post。此外 e.getMessage();
什么都不做,打印它或使用 e.printStackTrace();
代替。
假设 serialise.bin 是一个充满单词的文件,并且在序列化时是一个 ArrayList
public static ArrayList<String> deserialise(){
ArrayList<String> words= new ArrayList<String>();
File serial = new File("serialise.bin");
try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(serial))){
System.out.println(in.readObject()); //prints out the content
//I want to store the content in to an ArrayList<String>
}catch(Exception e){
e.getMessage();
}
return words;
}
我希望能够反序列化 "serialise.bin" 文件并将内容存储在 ArrayList
将它转换为 ArrayList<String>
,就像 in.readObject()
做 return 和 Object
一样,并将它分配给 words
:
@SuppressWarnings("unchecked")
public static ArrayList<String> deserialise() {
// Do not create a new ArrayList, you get
// it from "readObject()", otherwise you just
// overwrite it.
ArrayList<String> words = null;
File serial = new File("serialise.bin");
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(serial))) {
// Cast from "Object" to "ArrayList<String>", mandatory
words = (ArrayList<String>) in.readObject();
} catch(Exception e) {
e.printStackTrace();
}
return words;
}
可以添加注解 @SuppressWarnings("unchecked")
来抑制类型安全警告。发生这种情况是因为您必须将 Object
转换为 generic 类型。使用 Java 的 type erasure 编译器无法知道转换在运行时是否类型安全。 Here 是另一个 post。此外 e.getMessage();
什么都不做,打印它或使用 e.printStackTrace();
代替。