【发布时间】:2015-07-01 22:48:05
【问题描述】:
是否可以使用javapoet 生成静态初始化程序?请参阅下面我尝试生成的示例:
class Foo {
static int one = 1;
static int two = 2;
static int sum;
static {
sum = one + two;
}
}
我尝试使用 static 修饰符将静态初始化程序添加为构造函数:
TypeSpec.classBuilder("Foo")
.addField(FieldSpec.builder(int.class, "one", Modifier.STATIC).initializer("1").build())
.addField(FieldSpec.builder(int.class, "two", Modifier.STATIC).initializer("2").build())
.addField(int.class, "sum", Modifier.STATIC)
.addMethod(MethodSpec.constructorBuilder()
.addModifier(Modifier.STATIC)
.addCode("sum = one + two;")
.build())
.build();
但这会产生static Foo() { ... } 而不是static {...},这是不正确的语法。
有办法吗?
【问题讨论】:
-
@t0mppa,反之亦然 - 这个问题与我的重复(见日期)
-
好吧,另一个答案是最新的。这个有一个给出错误想法的答案,因为它是在一段时间后修复的。我不介意事情的发展方向,但应该留下一个有最新答案的主要问题。
标签: java code-generation javapoet