1

在 JavaPoet 中,我需要创建一个TypeName表示给定名称的内部类的实例。

我有一个TypeSpec.Builder classBuilder外部班级。不知道下一步该做什么。

请注意,此内部类仅存在于生成的程序中,而不存在于生成程序中。

4

2 回答 2

1

像这样创建类名:

ClassName mapEntry = ClassName.get("java.util", "Map", "Entry");

然后你使用正常的语法来创建它。

  addStatement("$T instance = new $T()", mapEntry, mapEntry);
于 2020-02-08T13:58:46.957 回答
0

所以,假设你有一些来自 TypeSpec.Builder 的 TypeSpec:

TypeSpec.Builder classBuilder = new TypeSpec.Builder();
TypeSpec typeSpec  = classBuilder.build();

之后你需要创建 JavaFile 并为这个类指定你的包名:

String packageName = "your.package.name";
JavaFile javaFile = JavaFile.builder(packageName, typeSpec).build();

现在,您可以像这样在其他文件中使用此 JavaFile(您需要使用以前的 JavaFile 作为参数):

ClassName className = ClassName.get(javaFile.getPackageName(), javaFile.getTypeSpec().getName());
TypeSpec.Builder otherClassBuilder = new TypeSpec.Builder();
otherClassBuilder.addStatement("$T instance = new $T()", className , className );

因此,您可以使用 className 作为生成的类来生成其他类。

于 2021-03-31T16:24:23.713 回答