5
JavaPoetを使用して、タイプリテラルを値として持つアノテーションを生成したいと考えています。たとえば:JavaPoetにクラスリテラルを生成させるにはどうすればよいですか?
@AutoService(MyService.class)
public class GeneratedClass implements MyService {
}
私は、私は考えることができるすべてのオプションを試してみましたが、どれも作業しました:$L
を使用して
TypeSpec.classBuilder("GeneratedClass")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(MyService.class)
.addAnnotation(
AnnotationSpec.builder(AutoService.class).addMember(
"value", "$L", MyService.class
).build()
)
は$T
を使用してinterface MyService
を生成し、近くである、my.package.MyService
を生成しますが、 .class
部分が欠けています。 $N
を使用して
はエラーを与える:expected name but was my.package.MyService
は、どのように私はそれが注釈値としてMyService.class
生成するのですか?
私は他のやり方を知らない。 'format'は' Enum'ではなく 'String'なので、これが推奨されたと思います。 –
これはまさに正しい方法です。 –
'ParameterizedTypeName'を扱うときはどうですか? – WouterH