Я хочу использовать JavaPoet для генерации аннотации с литералом типа в качестве значения. Например:Как получить 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
в качестве значения аннотаций?
Не знаю, как это сделать. Я предполагаю, что это было рекомендовано, потому что 'format' является' String', а не 'Enum'. –
Это точно правильный путь. –
Как насчет того, когда вы имеете дело с параметризованным типом имени? – WouterH