Я хочу использовать JavaPoet для создания аннотации с литералом типа в качестве значения. Например:
@AutoService(MyService.class)
public class GeneratedClass implements MyService {
}
Я перепробовал все возможные варианты, но ни один из них не работает:
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
в качестве значения аннотации?