我越来越
Exception in thread "main" java.lang.NullPointerException
at java.io.FileOutputStream.<init>(FileOutputStream.java:201)
at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
at lib.Entry.serialize(Entry.java:17)
at main.Main.main(Main.java:8)
在哪里Entry.java:17
(stream.writeObject(this);
见下文)
入口.java
package lib;
import java.io.*;
public class Entry { // Superclass.
String filename; // Set below.
String name; // Set by the subclass.
public void main() {
this.filename = this.name + ".ser";
serialize();
}
public void serialize() {
try {
FileOutputStream file = new FileOutputStream(this.filename);
ObjectOutputStream stream = new ObjectOutputStream(file);
stream.writeObject(this);
stream.close();
file.close();
System.out.println("Serialized.");
} catch(IOException e) {
e.printStackTrace();
}
}
}
Place.java
package lib;
public class Place extends lib.Entry { // A subclass.
public String name;
public Place(String name) {
this.name = name;
}
}
主.java
package main;
import lib.Place;
public abstract class Main {
public static void main(String[] args) {
Place room = new Place("room");
room.serialize();
}
}
为什么我NullPointerException
在使用时得到一个this
?我正在尝试将当前对象实例写入ObjectOutputStream
. 我是 Java 新手,我不知道如何继续。在 Python 中,我会按照我在 Java 中stream.writeObject(self)
使用的相同思路来使用类似的东西。this
我尝试使用stream.writeObject(Object this);
,但它没有用。我也试过
Object p = this;
stream.writeObject(p);
我猜是一样的。它也没有工作。这个想法是有更多的类(除了Place
)扩展,允许使用该方法Entry
对它们进行序列化。Entry.serialize()