Получить параметризованный тип класса из родительского класса в Java - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть абстрактный класс, который возвращает объект дочернего класса и универсальный объект viewType

abstract public class _Adapter<ChildClass, ViewType extend DefinedView>
{
  ViewType view;

    public ViewType getView()
    {
        return view;
    }

  public ChildClass setValue()
    {
    //do something
        return (ChildClass) this;
    }

  private ViewType createView()
    {
        ParameterizedType superClass = (ParameterizedType) getClass().getGenericSuperclass();
        Class<ViewType> type = (Class<ViewType>) superClass.getActualTypeArguments()[1];
        ViewType view = null;
        Constructor<?> ctor = null;

        try
        {
            ctor = type.getConstructor( SomeDataType );
        }
        catch (NoSuchMethodException e)
        {
            e.printStackTrace();
        }

        try
        {
            view = (ViewType) ctor.newInstance( somedata() );
        }
        catch (InstantiationException | InvocationTargetException | IllegalAccessException e)
        {
            e.printStackTrace();

        }

        return view;
    }

}

И у меня есть класс A, который определяет ViewType

abstract class A<ChildClass> extends _Adapter<ChildClass, DefinedViewTypeA>
{
}

Наконец, есть класс B, который расширяет A, но ожидает viewType от класса A

class B extends A<B>
{

}

метод createView () не будет работать для класса B, поскольку отсутствует второй аргумент класса параметра. Так, как я могу заставить это работать.

...