Javapoet 超类泛型
Javapoet superclass generic
任何人都知道我如何使用 javapoet 执行以下操作
public class MyClassGenerated extends MyMapper<OtherClass>{
}
我的生成代码:
TypeSpec generateClass() {
return classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(???????????????)
.build();
}
ParameterizedTypeName
class 允许您在声明超级 class 时指定泛型类型参数。例如,如果您的 MyClassGenerated
class 是 MyMapper
class 的子 class,您可以设置 MyMapper
的通用类型参数,例如所以:
TypeSpec classSpec = classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(ParameterizedTypeName.get(ClassName.get(MyMapper.class),
ClassName.get(OtherClass.class)))
.build();
这将生成一个 TypeSpec
对象,它等同于以下 class:
public class MyClassGenerated extends MyMapper<OtherClass> { }
虽然问题中未指定,但请注意,您可以设置任意数量的泛型类型参数,只需将它们以 正确的顺序 添加到 ParameterizedTypeName.get
调用中即可:
ParameterizedTypeName.get(
ClassName.get(SuperClass.class),
ClassName.get(TypeArgumentA.class),
ClassName.get(TypeArgumentB.class),
ClassName.get(TypeArgumentC.class)
); // equivalent to SuperClass<TypeArgumentA, TypeArgumentB, TypeArgumentC>
有关 ParameterizedTypeName.get()
方法的详细信息,请参阅文档 here or the "$T for Types" section of the JavaPoet GitHub page。
任何人都知道我如何使用 javapoet 执行以下操作
public class MyClassGenerated extends MyMapper<OtherClass>{
}
我的生成代码:
TypeSpec generateClass() {
return classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(???????????????)
.build();
}
ParameterizedTypeName
class 允许您在声明超级 class 时指定泛型类型参数。例如,如果您的 MyClassGenerated
class 是 MyMapper
class 的子 class,您可以设置 MyMapper
的通用类型参数,例如所以:
TypeSpec classSpec = classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(ParameterizedTypeName.get(ClassName.get(MyMapper.class),
ClassName.get(OtherClass.class)))
.build();
这将生成一个 TypeSpec
对象,它等同于以下 class:
public class MyClassGenerated extends MyMapper<OtherClass> { }
虽然问题中未指定,但请注意,您可以设置任意数量的泛型类型参数,只需将它们以 正确的顺序 添加到 ParameterizedTypeName.get
调用中即可:
ParameterizedTypeName.get(
ClassName.get(SuperClass.class),
ClassName.get(TypeArgumentA.class),
ClassName.get(TypeArgumentB.class),
ClassName.get(TypeArgumentC.class)
); // equivalent to SuperClass<TypeArgumentA, TypeArgumentB, TypeArgumentC>
有关 ParameterizedTypeName.get()
方法的详细信息,请参阅文档 here or the "$T for Types" section of the JavaPoet GitHub page。