2011-02-07 2 views
0
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); 
} 

IFF 템플릿은 항상 정확한 구현 클래스 (예 : IBaseObject)에 바인딩됩니다. 템플릿 매개 변수 T는 typeInfo와 동일한 정보를 포함합니다. 정보의 중복을 줄이는 방법이 있습니까? 심지어 좋은 생각입니까?동적으로 자바 바인딩 템플릿

ITypeInfo typeInfo = getTypeInfoForName(IDerivedObject.TYPE_NAME); 
List<IBaseObject> objects = this.<IBaseObject>readAllObjectsOfType(typeInfo); 

법적 자바이며, 따라서 만약 실수 만 BaseObject 부분이 아닌 DerivedObject 부분을 만들 것이라고 호출 때문에, 확실하지 않다.

FWIW이 모두 템플릿에 의해 정의 된 클래스의 개체를 구성하는 법적 자바 아니지만 나는이 나쁜 아이디어라고 판단 Reflecting Generics

답변

0

FWIW 당 해결할 수 있습니다 Class<T> = T.class 같은 것을 필요로 의미 왜냐하면 제가 제안한 이유 때문이며, 우리가 언어의 자연스러운 흐름에 반대하기 때문입니다.

관련 문제