JAVA序列化问题求助
先上代码:
UserSevenDayFace类:
现在的问题的为什么这样无法对UserSevenDayFace类进行序列化?
反编译了一下class文件发现ST 类的代码有两个ST.class与ST$1.class是,
ST$1.class代码为:
对这个代码不太理解,为什么ST$1的构造函数中会有ST 参数?
我对ST的代码做了下修改:
ST:
编译后同样有两个文件ST与ST$1
ST$1代码为:
但是这里再运行发现 程序可以正常执行,也可以序列化了,但是为什么 ?而且为什么ST$1的构造函数中没有了参数?
public interface T {
void test();
}public class ST implements T{
@Override
public void test() {
List<UserSevenDayFace> d=new ArrayList<>();
d.add(new UserSevenDayFace(){{setDate("K");setOfficialPrice(0.0);setUserPrice(0.0);}});
//这里封装了一个方法将这个集合序列化后存入Redis中,但是运行程序这里会报错:
//java.io.NotSerializableException: com.dingxin.kunyu.test.ST
SimpleCacheUtil.setObject("a", d);
System.out.println("d");
System.out.println(SimpleCacheUtil.getObject("a"));
}
public static void main(String[] args) {
new ST().test();
}
}UserSevenDayFace类:
public class UserSevenDayFace implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String date;
private Double officialPrice;
private Double userPrice;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public Double getOfficialPrice() {
return officialPrice;
}
public void setOfficialPrice(Double officialPrice) {
this.officialPrice = officialPrice;
}
public Double getUserPrice() {
return userPrice;
}
public void setUserPrice(Double userPrice) {
this.userPrice = userPrice;
}
}现在的问题的为什么这样无法对UserSevenDayFace类进行序列化?
反编译了一下class文件发现ST 类的代码有两个ST.class与ST$1.class是,
ST$1.class代码为:
class ST$1
extends UserSevenDayFace
{
ST$1(ST paramST)
{
setDate("K");setOfficialPrice(Double.valueOf(0.0D));setUserPrice(Double.valueOf(0.0D));
}
}对这个代码不太理解,为什么ST$1的构造函数中会有ST 参数?
我对ST的代码做了下修改:
ST:
public class ST implements T{
@Override
public void test() {
}
public static void main(String[] args) {
List<UserSevenDayFace> d=new ArrayList<>();
d.add(new UserSevenDayFace(){{setDate("K");setOfficialPrice(0.0);setUserPrice(0.0);}});
SimpleCacheUtil.setObject("a", d);
System.out.println("d");
System.out.println(SimpleCacheUtil.getObject("a"));
}
}编译后同样有两个文件ST与ST$1
ST$1代码为:
class ST$1
extends UserSevenDayFace
{
ST$1()
{
setDate("K");setOfficialPrice(Double.valueOf(0.0D));setUserPrice(Double.valueOf(0.0D));
}
}
但是这里再运行发现 程序可以正常执行,也可以序列化了,但是为什么 ?而且为什么ST$1的构造函数中没有了参数?
...全文
相关推荐
java 中序列化NotSerializableException问题解决办法
Java 中序列化 NotSerializableException 问题解决办法Java 中序列化 NotSerializableException 问题是 Java 开发中常见的问题之一。
Java实现几种序列化方式总结
以下是几种常见的Java序列化方式的详细解释:1. **Java原生序列化** Java原生序列化是最基础的序列化方式,适用于Java标准库中的对象。
Java中对象序列化与反序列化详解
可以通过实现`serialVersionUID`字段来解决这个问题,确保序列化兼容性。3. **性能**:序列化和反序列化会消耗一定的时间和内存,因此在不需要序列化的情况下应避免使用。
java序列化和反序列化,面试必备
但是这种方式可能会导致安全问题(如反序列化攻击),并且性能相对较低。2.
浅谈Java序列化和hessian序列化的差异
Java序列化Java序列化是Java语言提供的一种序列化机制,它可以将对象转换为字节流,以便在网络上传输。


Java SE
