java - 如何让 JavaPoet 生成类文字?

标签 java 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作为注解值?

最佳答案

你试过吗?

TypeSpec.classBuilder("GeneratedClass")
            .addModifiers(Modifier.PUBLIC)
            .addSuperinterface(MyService.class)
            .addAnnotation(
                    AnnotationSpec.builder(AutoService.class).addMember(
                    "value", "$T.class", MyService.class).build()
            ).build();

关于java - 如何让 JavaPoet 生成类文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39408251/

相关文章:

java - 在 Spring 的两个 bean 之间切换

javapoet - java中如何在javapoet中生成内部类

java - 添加成员到 JavaPoet

Javapoet/JavaWriter 附加到现有类

java - 如何在 javapoet 中为 methodspec 添加修饰符?

java - UnknownHostException(网络服务 http-get)

java - 合并映射和修改值

java - 将包含 ""或 () 的代码插入文本字段

java - 帧显示问题

JavaPoet:如何在注释中构建注释