首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javapoet超类泛型

Javapoet超类泛型
EN

Stack Overflow用户
提问于 2016-05-04 13:02:10
回答 1查看 2.7K关注 0票数 10

任何人都知道我如何使用javapoet执行以下操作

代码语言:javascript
复制
public class MyClassGenerated extends MyMapper<OtherClass>{

}

我的代言:

代码语言:javascript
复制
TypeSpec generateClass() {
    return classBuilder("MyClassGenerated")
         .addModifiers(PUBLIC)
         .superclass(???????????????)
         .build();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 17:44:53

ParameterizedTypeName类允许您在声明超类时指定泛型类型参数。例如,如果MyClassGenerated类是MyMapper类的子类,则可以设置MyMapper的泛型类型参数,如下所示:

代码语言:javascript
复制
TypeSpec classSpec = classBuilder("MyClassGenerated")
     .addModifiers(PUBLIC)
     .superclass(ParameterizedTypeName.get(ClassName.get(MyMapper.class),  
                                           ClassName.get(OtherClass.class)))
     .build();

这将生成一个与以下类等效的TypeSpec对象:

代码语言:javascript
复制
public class MyClassGenerated extends MyMapper<OtherClass> { }

虽然问题中没有指定,但是请注意,您可以通过简单地在正确顺序中将它们添加到ParameterizedTypeName.get调用中来设置任意数量的泛型类型参数:

代码语言:javascript
复制
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"部分。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37028642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档