Javapoet 和通用 class 声明
Javapoet and generic class declarations
如何让 javapoet 生成下面的 java 代码?
class B<T extends U> implements A<T> {
}
我知道有一个class WildcardTypeName
,但它只能生成? extends U
或 ? super U
。
我要的是T extends U
在你的描述中,U
和A
应该存在class。您可以使用以下代码。
public static void main(String[] args) throws IOException {
TypeVariableName t = TypeVariableName.get("T").withBounds(U.class);
TypeSpec type = TypeSpec.classBuilder("B")
.addTypeVariable(t)
.addSuperinterface(ParameterizedTypeName.get(ClassName.get(A.class), t))
.build();
JavaFile.builder("", type).build().writeTo(System.out);
}
它的输出是
import yourpackage.A;
import yourpackage.U;
class B<T extends U> implements A<T> {
}
如何让 javapoet 生成下面的 java 代码?
class B<T extends U> implements A<T> {
}
我知道有一个class WildcardTypeName
,但它只能生成? extends U
或 ? super U
。
我要的是T extends U
在你的描述中,U
和A
应该存在class。您可以使用以下代码。
public static void main(String[] args) throws IOException {
TypeVariableName t = TypeVariableName.get("T").withBounds(U.class);
TypeSpec type = TypeSpec.classBuilder("B")
.addTypeVariable(t)
.addSuperinterface(ParameterizedTypeName.get(ClassName.get(A.class), t))
.build();
JavaFile.builder("", type).build().writeTo(System.out);
}
它的输出是
import yourpackage.A;
import yourpackage.U;
class B<T extends U> implements A<T> {
}