Hey I'm trying to generate a class like this:
public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}
At the moment I can generate:
public abstract class ResourceListAdapter extends RecyclerView.Adapter<?> {}
With following code:
TypeSpec type = TypeSpec.classBuilder(thisClass)
.superclass(ParameterizedTypeName.get(adapterClassName, WildcardTypeName.subtypeOf(Object.class)))
.addModifiers(Modifier.ABSTRACT, Modifier.PUBLIC)
.build();
I'm also able to do something like this:
private ResourceListAdapter<? extends ResourceViewHolder> adapter;
With:
ParameterizedTypeName.get(thisClass,WildcardTypeName.subtypeOf(resourceViewHolderClassName));
But I'm not able to combine this. So do you have any ideas??
I got a solution!
TypeSpec type = TypeSpec.classBuilder(thisClass)
.superclass(ParameterizedTypeName.get(adapterClassName, TypeVariableName.get("T")))
.addTypeVariable( TypeVariableName.get("T", resourceViewHolderClassName))
Will generate:
public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With