把一个对像的class属性序列化到文件,然后用反编译工具打开,可行吗?我得到的文件总打不开。
[b]问题补充:[/b]
我上参考的这个文章:http://blog.csdn.net/li_xj/archive/2006/05/12/726341.aspx
,但总得不到正确结果
那样能行么……反正简单试试普通的类也不行:
[code="java"]import java.io.*;
public class Dec {
public static void main(String[] args) throws Exception {
Class<?> clz = "".getClass(); // String.class
String clzName = clz.getName();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(clzName + ".class1"));
out.writeObject(clz);
out.flush();
out.close();
}
}[/code]
这写出的java.lang.String.class1文件总是37字节,里面并不包含String的字节码。其实Java在序列化的时候总是会写出0xAC 0xED这个magic stream identifier,然后是流的版本信息、类名等信息。而Java的.class文件必须是0xCA 0xFE 0xBA 0xBE开头的。二者单从文件格式上就不可能匹配……
关于序列化可以参考这个PDF:[url]https://web.imvs.technik.fhnw.ch/_zope/dp/files/serialization/SL_Serialization.pdf[/url]
反编译工具是反编译.class文件,也就是字节码,又不是序列化后的东西
呵呵,反义词:
编译 - 反编译
序列化 - [b][color=indigo]反序列化[/color][/b]
用Object Reader吧。
话说要是能在代码里使用到某个对象,那么它对应的类的.class文件就肯定能拿到。一般Java反编译工具是针对.class文件来做反编译的……