JAVA序列化问题求助

仰望星空_Star 仰望星空_Star 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先上代码:
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的构造函数中没有了参数?
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
仰望星空_Star
Java SE 62,620 成员 307,251 内容