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
答案 0 :(得分:0)
FWIW我认为这是一个坏主意,因为我建议的原因,因为我们反对语言的自然流动。