如何使用Java提取某个类的serialVersionUID

海诗美妆 2008-07-24 01:46:44
在JDK的工具中,使用serialver可以提取到指定类的serialVersionUID,
但是在Java中如何做到?
...全文
461 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
海诗美妆 2008-07-24
  • 打赏
  • 举报
回复
已经解决了!
使用的是java.io.ObjectStreamClass

谢谢各位的帮助!
mike1980 2008-07-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 froole 的回复:]
我的意思是针对于一个没有赋予serialVersionUID的类,如何从外部给它生成一个新的serialVersionUID。
[/Quote]

关注中,我也想了解这个生成方法。
ldy214 2008-07-24
  • 打赏
  • 举报
回复
serialVersionUID
是什么?
xunyiren 2008-07-24
  • 打赏
  • 举报
回复
import java.io.Serializable;

import sun.tools.serialver.SerialVer;

public class W {

/**
* @param args
*/
public static void main(String[] args) throws Exception {
SerialVer.main(new String[]{"Z"});
}
}

class Z implements Serializable{

}
海诗美妆 2008-07-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xunyiren 的回复:]
可以通过反射获取
Java codeimportjava.io.Serializable;importjava.lang.reflect.Field;publicclassW {/***@paramargs*/publicstaticvoidmain(String[] args)throwsException {
Object obj=Y.class.newInstance();
Field field=Y.class.getDeclaredField("serialVersionUID");
field.setAccessible(true);
System.out.println(field.getLong(obj));
}
}classYimplementsSerializable{priv…
[/Quote]

提问叙述的太模糊!
我的意思是针对于一个没有赋予serialVersionUID的类,如何从外部给它生成一个新的serialVersionUID。
Ant 2008-07-24
  • 打赏
  • 举报
回复
同意楼上的,既然序列化的时候加入的id属性,就可以通过反射取得
xunyiren 2008-07-24
  • 打赏
  • 举报
回复
可以通过反射获取

import java.io.Serializable;
import java.lang.reflect.Field;

public class W {

/**
* @param args
*/
public static void main(String[] args) throws Exception {
Object obj = Y.class.newInstance();
Field field = Y.class.getDeclaredField("serialVersionUID");
field.setAccessible(true);
System.out.println(field.getLong(obj));
}
}

class Y implements Serializable{

private static final long serialVersionUID = 1092141947575795242L;

void prt(){
System.out.println("Y");
}
}

62,627

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧