У меня есть абстрактный класс, который возвращает объект дочернего класса и универсальный объект 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, поскольку отсутствует второй аргумент класса параметра. Так, как я могу заставить это работать.