ITypeInfo typeInfo = getTypeInfoForName(IDerivedObject.TYPE_NAME);
List<IDerivedObject> objects = this.<IDerivedObject>readAllObjectsOfType(typeInfo);
public <T extends IBaseObject> List<T> readAllObjectsOfType(ITypeInfo typeInfo) throws Exception
{
return ObjectBuilder.<T>readAllObjects(typeInfo);
}
Если шаблон всегда связан с конкретным реализующим классом (например, не IBaseObject), параметр шаблона T содержит ту же информацию, что и typeInfo.Есть ли способ уменьшить это дублирование информации?Это даже хорошая идея?Я не уверен, потому что вызов
ITypeInfo typeInfo = getTypeInfoForName(IDerivedObject.TYPE_NAME);
List<IBaseObject> objects = this.<IBaseObject>readAllObjectsOfType(typeInfo);
является допустимым java, и, таким образом, если случайно вызвать, будут созданы только части BaseObject, а не части DerivedObject.
FWIW это будет означать создание объектов из классаопределяется шаблоном, требующим что-то вроде Class<T> = T.class
, что не является допустимым Java, но возможно обойти за Отражение Generics