шаблон привязки Java динамически - PullRequest
0 голосов
/ 07 февраля 2011
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

1 Ответ

0 голосов
/ 19 марта 2011

FWIW Я решил, что это плохая идея, и по той причине, которую я предложил, и потому что мы идем против естественного потока языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...