Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java动态绑定模板_Java_Templates_Generics - Fatal编程技术网

java动态绑定模板

java动态绑定模板,java,templates,generics,Java,Templates,Generics,如果模板始终绑定到确切的实现类,例如非IBaseObject,则模板参数T包含与typeInfo相同的信息。有没有办法减少这种信息重复?这是个好主意吗?我不确定,因为打电话 ITypeInfo typeInfo = getTypeInfoForName(IDerivedObject.TYPE_NAME); List<IDerivedObject> objects = this.<IDerivedObject>readAllObjectsOfType(typeInfo);

如果模板始终绑定到确切的实现类,例如非IBaseObject,则模板参数T包含与typeInfo相同的信息。有没有办法减少这种信息重复?这是个好主意吗?我不确定,因为打电话

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);
}
是合法的java,因此如果意外调用,将只构造BaseObject部分,而不是DerivedObject部分


FWIW这意味着从一个模板定义的类构造对象,需要class=T.class之类的东西,这不是合法的java,但可以根据

FWIW解决。我认为这是一个坏主意,这既是出于我的建议,也是因为我们违背了语言的自然流动

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