Общий класс с JavaPoet

Эй, я пытаюсь создать такой класс:

public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}

На данный момент я могу сгенерировать:

public abstract class ResourceListAdapter extends RecyclerView.Adapter<?> {}

Со следующим кодом:

TypeSpec type = TypeSpec.classBuilder(thisClass)
    .superclass(ParameterizedTypeName.get(adapterClassName, WildcardTypeName.subtypeOf(Object.class)))
    .addModifiers(Modifier.ABSTRACT, Modifier.PUBLIC)
    .build();

Я также могу сделать что-то вроде этого:

private ResourceListAdapter<? extends ResourceViewHolder> adapter;

С:

ParameterizedTypeName.get(thisClass,WildcardTypeName.subtypeOf(resourceViewHolderClassName));

Но я не умею совмещать это. Так есть идеи??


person Marcel Groß    schedule 09.12.2016    source источник


Ответы (1)


У меня есть решение!

TypeSpec type = TypeSpec.classBuilder(thisClass)
            .superclass(ParameterizedTypeName.get(adapterClassName, TypeVariableName.get("T")))
            .addTypeVariable( TypeVariableName.get("T", resourceViewHolderClassName))

Будет генерировать:

public abstract class ResourceListAdapter<T extends ResourceViewHolder> extends RecyclerView.Adapter<T> {}
person Marcel Groß    schedule 09.12.2016