我正在尝试找到如何实现类似于 Eclipse 功能“添加未实现的方法”的 hack。
我不想在编写代码时添加这些方法,而是想在编译期间执行此操作,使用模板生成方法体。此外,我不想修改原始的 .java 源文件。
例如,假设我有以下内容:
interface I { void foo(); }
class C implements I {
public static void main(String[] args) { new C().foo(); }
}
编译它通常会导致错误,因为I.foo
没有实现。
我希望编译成功并随后执行使用我的模板。模板可以像{throw UnsupportedOpeationException()
} 这样简单。我确实希望能够获得有关方法和实现的接口的更多信息并在模板中使用它,但这应该不难吧?
我的第一个想法是尝试注释 ( AutoImplementMethods
),但注释处理器无法修改它正在处理的注释代码。
我对此感到有些满意,AspectJ
但我不明白如何使用类型间声明来完成。
除了使用我自己的 java 解析器和生成代码代码之外,有什么建议可以做到这一点吗?