如何让 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();