2015-01-21 39 views
0

参照以下链接,我在运行时创建了类,http://blog.javaforge.net/post/31913732423/howto-create-java-pojo-at-runtime-with-javassist。现在我需要查看创建的类,这意味着它将在哪里创建类文件?可以将它保存在磁盘/工作空间上吗?在运行时创建Pojo并将其保存在磁盘上?

+1

只需调用['cc.writeFile()'](http://www.csg.ci.iu- tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#writeFile--)在你调用cc.toClass()之前或之后。有时它真的有助于阅读文档... – Holger 2015-01-21 13:38:38

+0

太好了。这是工作。但是有没有什么办法可以用可读格式生成文件? – Vinod 2015-01-21 13:49:28

回答

2

在调用cc.toClass()之前或之后,您可以调用cc.writeFile()来存储包含生成的类的字节码的类文件。

我不知道获取源文件的等效操作,但是,您可能会考虑实际上已经生成源代码(至少对于这些方法)并将它依次传递给Javassist的CtClass被编译。

因此,使用相同的代码来生成整个类的源代码并不难,因为您只需要连接这些方法,添加字段声明并将其与类体相框。毕竟,生成一个源文件意味着只需编写一个格式的文本文件,你已经很清楚...

0

你为什么要这么做?它可以创建从POJO的文件,然后你会必须遵循本教程:

http://www.mkyong.com/java/how-to-write-an-object-to-file-in-java/。但是,你只能将这些字段的内容写入文件。

+0

有很多日常的上下文将记录写入文件很有用。似乎很奇怪质疑OP的原因。 (优秀的链接btw - mkyong网站真的很有用) – Elemental 2015-01-21 12:22:48

+0

我在我的应用程序中使用了一些快速应用程序开发工具,所以基于POJO它将生成UI和模型。所以我想将生成的POJO保存在工作区中 – Vinod 2015-01-21 12:59:19

+0

我对作者的意思有点困惑。也许我感觉到'class-file'这个词。应该不会怀疑这个问题,因为序列化在编程中是非常普遍的做法。希望OP有帮助:) – 2015-01-21 13:00:54

2

获取java对象并将其写入文本类文件的过程称为序列化。这个语言有很好的支持。

Oracle对这些功能的文件可以发现here和教程here

一般来说这是很容易使用和充分理解,并提供了一些巧妙的功能,包括检测一个程序的一个版本中保存的记录,但不兼容的版本,试图加载的能力。

此外这stack overflow question将对你有用。

相关问题