【发布时间】:2011-02-07 15:28:59
【问题描述】:
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);
是合法的java,因此如果不小心调用将只构造BaseObject部分而不是DerivedObject部分。
FWIW 这意味着从模板定义的类构造对象,需要类似Class<T> = T.class 的东西,这不是合法的java,但可以根据Reflecting Generics 解决
【问题讨论】: