首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaPoet的泛型类

使用JavaPoet的泛型类
EN

Stack Overflow用户
提问于 2016-12-10 00:37:30
回答 1查看 1.8K关注 0票数 9

嘿,我正在尝试生成一个这样的类:

代码语言:javascript
复制
public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}

目前,我可以生成:

代码语言:javascript
复制
public abstract class ResourceListAdapter extends RecyclerView.Adapter<?> {}

使用以下代码:

代码语言:javascript
复制
TypeSpec type = TypeSpec.classBuilder(thisClass)
    .superclass(ParameterizedTypeName.get(adapterClassName, WildcardTypeName.subtypeOf(Object.class)))
    .addModifiers(Modifier.ABSTRACT, Modifier.PUBLIC)
    .build();

我也可以这样做:

代码语言:javascript
复制
private ResourceListAdapter<? extends ResourceViewHolder> adapter;

通过以下方式:

代码语言:javascript
复制
ParameterizedTypeName.get(thisClass,WildcardTypeName.subtypeOf(resourceViewHolderClassName));

但我不能把它组合起来。那么你有什么想法吗??

EN

回答 1

Stack Overflow用户

发布于 2016-12-10 02:37:05

我有办法了!

代码语言:javascript
复制
TypeSpec type = TypeSpec.classBuilder(thisClass)
            .superclass(ParameterizedTypeName.get(adapterClassName, TypeVariableName.get("T")))
            .addTypeVariable( TypeVariableName.get("T", resourceViewHolderClassName))

将生成:

代码语言:javascript
复制
public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41065000

复制
相关文章

相似问题

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