从Java的父类获取参数化的类类型

时间:2018-09-01 11:46:55

标签: java generic-type-argument

我有一个抽象类,它返回子类对象和一个通用的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>
{
}

最后有一个扩展了A的类B,但它希望类A的viewType

class B extends A<B>
{

}

方法 createView()不适用于类B,因为没有第二个参数类参数。那么我该如何使其工作。

0 个答案:

没有答案