Java I’;m使用反序列化方法创建对象获取异常“;NullPointerException”;?
我尝试用四种不同的方式为一个类创建对象,但是我可以用三种方式创建对象。但每当我使用反序列化方法创建一个对象时,就会出现异常“NullPointerException”。请告诉我解决该异常的可能方法 下面是代码Java I’;m使用反序列化方法创建对象获取异常“;NullPointerException”;?,java,Java,我尝试用四种不同的方式为一个类创建对象,但是我可以用三种方式创建对象。但每当我使用反序列化方法创建一个对象时,就会出现异常“NullPointerException”。请告诉我解决该异常的可能方法 下面是代码 import java.io.InputStream; import java.io.ObjectInputStream; class Student{ private String name; public String getName(){ retu
import java.io.InputStream;
import java.io.ObjectInputStream;
class Student{
private String name;
public String getName(){
return name;
}
public void setName(String s){
name=s;
}
}
public class TestEncaps implements Cloneable{
public void Testing(){
System.out.println("Testing is On Going");
}
protected Object clone() throws CloneNotSupportedException {
return (TestEncaps) super.clone();
}
/**
* @param args
* @throws CloneNotSupportedException
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Student s = new Student();
s.setName("Lakshmikantham");
System.out.println(s.getName());
TestEncaps te = new TestEncaps();
TestEncaps te1 = (TestEncaps) te.clone();
te1.Testing();
te.Testing();
try{
InputStream inputStream = null;
ObjectInputStream inStream = new ObjectInputStream(inputStream);
TestEncaps object4 = (TestEncaps) inStream.readObject();
object4.Testing();
}catch(Exception e){
e.printStackTrace();
}finally{
}
}
}
您需要将序列化文件作为输入传递给
InputStream
,并将其对象传递给ObjectInputStream
TestEncaps object4 = null;
FileInputStream inputFileStream = new FileInputStream("file.dat");
ObjectInputStream objectInputStream = new ObjectInputStream(inputFileStream);
object4 = (TestEncaps)objectInputStream.readObject();
我怀疑inputStream在此代码片段中可能为null:
InputStream inputStream = null;
ObjectInputStream inStream = new ObjectInputStream(inputStream);
您正在创建参数为null的ObjectInputStream
InputStream inputStream = null;
ObjectInputStream inStream = new ObjectInputStream(inputStream);
TestEncaps object4 = (TestEncaps) inStream.readObject();
到
你缺少三样东西
null
流读取对象
这导致了异常
InputStream inputStream = null;
ObjectInputStream inStream = new ObjectInputStream(inputStream);
ObjectInputStream被称为连接流,它可以与I/O或网络流连接,从中可以读取序列化数据,在您的例子中,您可以直截了当地说
ObjectInputStream inStream = new ObjectInputStream(null);
并且基本上尝试从null
读取,因此出现了null指针异常
首先尝试将一些对象写入序列化文件(.ser type),然后从中读取,或者将已经存在的序列化文件传递给ObjectInputStream
,如下所示
FileInputStream fs=new FileInputStream(""likeThis.ser");
ObjectInputStream inStream = new ObjectInputStream(fs);
然后读一读
FileInputStream fs=new FileInputStream(""likeThis.ser");
ObjectInputStream inStream = new ObjectInputStream(fs);