这就是场景。
我有一个java代码将序列化对象写入.ser文件,另一个用于从.ser文件中读取对象。
执行序列化的代码还包含类定义,如下所示 -
abstract class Currency implements Serializable{
protected double value;
abstract double getValue();
abstract void print();
}
class Rupee extends Currency{
Rupee(double val){
value=val;
}
public double getValue(){
return value;
}
public void print(){
System.out.println("INR "+value);
}
}
class Dollar extends Currency{
Dollar(double val){
value=val;
}
public double getValue(){
return value;
}
public void print(){
System.out.println("USD "+value);
}
}
现在,我使用一个货币参考,我可以将其转发为卢比或美元,然后我随机生成卢比和美元对象,并将它们序列化为.ser文件。
问题是,在另一个代码中对此进行反序列化时,如何区分在美元或卢比对象之间读取的对象,因为它可以(随机生成)。 readObject()方法只返回一个Object类型,需要显式转换。要进行转换,我首先需要找出它是哪个类对象。帮助我。
答案 0 :(得分:1)
您可以使用运算符instanceof
来检索给定对象实例的类型。
示例:
if (currency instanceof Dollar) {...}