首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javapoet:引用其他生成的类

Javapoet:引用其他生成的类
EN

Stack Overflow用户
提问于 2016-03-29 08:32:07
回答 1查看 956关注 0票数 1

JavaPoet: 1.5.1版

JDK: 1.7

我使用注释来生成代码。这是我正在尝试的东西。

以下是该项目的一部分:

代码语言:javascript
复制
@GenService
public abstract class BaseService {
   ...
}

@GenController
public abstract class BaseController {
   ...
}

下面是打算通过上面的注释创建的

代码语言:javascript
复制
public class AService extends BaseService {
   ...
}

public class AController extends BaseController {
   @Autowired
   private AService aService;
   ...
}

直到编译后的AServiceAController不存在。

我可以包括@Autowired注释。但是,如何在AService中引用AController类型?

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 09:38:10

虽然不是直接的,但我通过汉尼斯·多夫曼的博客找到了答案:

注释处理101

解决方案如下:

代码语言:javascript
复制
...
FieldSpec.Builder fsBuilder;
try {
    ClassName clazz = ClassName.get("package.to.services", "AService");
    fsBuilder = FieldSpec.builder(clazz, "aService")
                .addModifiers(Modifier.PRIVATE)
                .addAnnotation(autowired.build());
} catch (MirroredTypeException mte) {
    DeclaredType classTypeMirror = (DeclaredType) mte.getTypeMirror();
    fsBuilder = FieldSpec.builder(TypeName.get(classTypeMirror), "aService")
                .addModifiers(Modifier.PRIVATE)
                .addAnnotation(autowired.build());
}
typeBuilder.addField(fsBuilder.build());

啊,真灵。但是,如果有更好的方法,请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36279203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档