生成内部阶级

时间:2016-01-06 16:29:06

标签: java annotation-processing

我的注释处理器读取这样的类:

@Foo
public class Bar (){

} 

现在我想生成一个内部类Bar$MyGeneratedClass,以便最后我有一个类MyGeneratedClass,编译器/ jvm看起来像这样:

public class Bar (){

   // Generated by annotation processor
   public static class MyGeneratedClass () { ... }
}

这可能吗?我想是的,我想我只需要将生成的类命名为Bar$MyGeneratedClass吧?

有人知道如何使用java诗人生成这样的内部类吗?

2 个答案:

答案 0 :(得分:0)

您可以使用javapoet创建新类。用javapoet修改现有的类是不可能的。

答案 1 :(得分:0)

在jvm级别上没有内部类这样的东西。 因此,虽然编译这两个类(内部和外部)都是为了模拟这种效果。

  • 内部类获取构造函数参数。使用该参数,您需要传入外部类的实例。
  • 由于两种类型都可以访问私有成员,因此会创建私有访问者。

特别是第二次转换需要您更改外部类。