2011-02-07 6 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これは、両方とも、テンプレートで定義されたクラスからオブジェクトを構築する正当なJavaではありませんが、私は、これは悪い考えだったことを決めたReflecting Generics

答えて

0

FWIWあたりに回避することが可能であるClass<T> = T.classのようなものを、必要な意味でしょう私が示唆した理由で、そして私たちは言語の自然な流れに逆らっているからです。

関連する問題