我想使用JavaPoet生成一个类型为literal的注释作为值.例如:
@AutoService(MyService.class)
public class GeneratedClass implements MyService {
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有我能想到的选项,但都没有用:
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$L", MyService.class
).build()
)
Run Code Online (Sandbox Code Playgroud)
使用$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();
Run Code Online (Sandbox Code Playgroud)