如何让 JavaPoet 生成 class 文字?
How do I get JavaPoet to generate a class literal?
我想使用 JavaPoet 生成以类型文字作为值的注释。例如:
@AutoService(MyService.class)
public class GeneratedClass implements MyService {
}
我已经尝试了所有我能想到的选项,但是none有效:
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$L", MyService.class
).build()
)
使用 $L
生成 interface MyService
使用 $T
生成 my.package.MyService
,它很接近但遗漏了 .class
部分。
使用$N
会报错:expected name but was my.package.MyService
如何让它生成 MyService.class
作为注释值?
你试过了吗?
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$T.class", MyService.class).build()
).build();
我想使用 JavaPoet 生成以类型文字作为值的注释。例如:
@AutoService(MyService.class)
public class GeneratedClass implements MyService {
}
我已经尝试了所有我能想到的选项,但是none有效:
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$L", MyService.class
).build()
)
使用 $L
生成 interface MyService
使用 $T
生成 my.package.MyService
,它很接近但遗漏了 .class
部分。
使用$N
会报错:expected name but was my.package.MyService
如何让它生成 MyService.class
作为注释值?
你试过了吗?
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$T.class", MyService.class).build()
).build();