gpt4 book ai didi

Javapoet:引用其他生成的类

转载 作者:行者123 更新时间:2023-12-01 10:08:58 24 4
gpt4 key购买 nike

JavaPoet:版本 1.5.1

JDK:1.7

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

以下内容可作为该项目的一部分:

@GenService
public abstract class BaseService {
...
}

@GenController
public abstract class BaseController {
...
}

以下打算通过上述注释创建:

public class AService extends BaseService {
...
}

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

编译前,AServiceAController 不存在。

我可以包含@Autowired注释。但是,如何将 AService 引用为 AController 中的类型?

最佳答案

虽然不是直接的,但我通过 Hannes Dorfmann 的博客找到了答案:

Annotation Processing 101

解决方案是这样的:

...
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());

它成功了。但是,如果有更好的方法,请告诉我。

关于Javapoet:引用其他生成的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com