任何人都知道我如何使用javapoet执行以下操作
public class MyClassGenerated extends MyMapper<OtherClass>{
}我的代言:
TypeSpec generateClass() {
return classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(???????????????)
.build();
}发布于 2016-05-04 17:44:53
ParameterizedTypeName类允许您在声明超类时指定泛型类型参数。例如,如果MyClassGenerated类是MyMapper类的子类,则可以设置MyMapper的泛型类型参数,如下所示:
TypeSpec classSpec = classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(ParameterizedTypeName.get(ClassName.get(MyMapper.class),
ClassName.get(OtherClass.class)))
.build();这将生成一个与以下类等效的TypeSpec对象:
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()方法的更多信息,请参见文档这里或JavaPoet GitHub页面的"$T For Types"部分。
https://stackoverflow.com/questions/37028642
复制相似问题