【发布时间】:2013-05-12 19:16:08
【问题描述】:
我想做一些注解处理(序列化):
我想要什么:
- 我不想对有问题的类进行子类化
- 我想插入一个方法到现有的类中
- 我想用ASM来添加这些方法
- 我不想手动生成,而是在编译时自动生成
我有什么:
- 注释:)
- 使用 ASM 扫描和修改 .class 文件的代码
问题:
- 我不知道何时处理 .class 文件
- 据我所知,AbstractProcessor 方法只允许创建新的 source 文件
- 使用ASM,我修改了.class文件,但是方法还需要我自己创建,编译器怎么编译.java文件呢?
想法:
- 现在,要添加的方法是由接口定义的,但是使用超类,我可以有一个 do-nothing 实现,我可以在帖子中重写它。但是,这剥夺了很大的灵活性,而且我仍然不知道如何使用 javac 一步编译它...
提前感谢您提供任何提示、建议和解决方案,
直到
【问题讨论】:
-
你的源文件是否尝试引用不存在的方法?那么不修改源代码或使用编译器插件就无法编译它们。
-
问题是不能用标准的apt注解处理修改源...
-
在 Java 8 中,集合类通过 lamda 功能得到扩展,并且为此目的,接口可以具有默认实现的功能。
-
是的,我喜欢 Java 8,它获得了 Scala 长期以来拥有的一些不错的功能,但 Android(Harmony)没有获得它们(我认为),所以我们将被简单的旧 Java 卡住6 :(