2011-02-07 169 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相同的信息。有沒有辦法減少這種重複的信息?這是一個好主意嗎?我不知道,因爲調用java動態綁定模板

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

是合法的Java,因此,如果不小心被稱爲將構建只有BaseObject部分,而不是DerivedObject部分。

FWIW這將意味着從模板中定義的類構造對象,需要像Class<T> = T.class,這是不合法的Java,但可以解決每Reflecting Generics

回答

0

FWIW我決定,這是一個壞主意,無論是因爲我建議的原因,也因爲我們違背了語言的自然流動。