Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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_Generics - Fatal编程技术网

Java 根据属性文件设置实例化泛型

Java 根据属性文件设置实例化泛型,java,generics,Java,Generics,我正在建立一个数据驱动的测试系统。我以前在XML中做过,但json给了我一些有趣的问题 对于每个请求和响应类型json,我在脚本中都有一个设置,其中我指定了一个pojo类型。该类型被实例化为一个类对象,该类对象被传递给jackson,以将json封送到一个可用的pojo中。所以它是这样的: "responseType": "java.util.List", 最终被抽到 Class<?> reponseType = null; try { if (d.shouldPass)

我正在建立一个数据驱动的测试系统。我以前在XML中做过,但json给了我一些有趣的问题

对于每个请求和响应类型json,我在脚本中都有一个设置,其中我指定了一个pojo类型。该类型被实例化为一个类对象,该类对象被传递给jackson,以将json封送到一个可用的pojo中。所以它是这样的:

"responseType": "java.util.List", 
最终被抽到

Class<?> reponseType = null;
try {
    if (d.shouldPass) {
        reponseType = Class.forName(d.responseType);
    }
} catch (ClassNotFoundException e) {
    throw new RequestResponseTypeInvalid(testName);
}
Class-reponseType=null;
试一试{
如果(d.shouldPass){
reponseType=Class.forName(d.responseType);
}
}catch(classnotfounde异常){
抛出新的RequestResponseTypeInvalid(testName);
}
我有可用的类信息在jackson中使用。我的问题是我需要这样做:

"responseType": "java.util.List<foo>", 
“responseType”:“java.util.List”,
否则,复杂的json类型将解析为哈希映射,而不是pojo。我想如果需要的话,我可以发挥创意,从hashmap到pojo加入一些东西,但我想知道是否有直接的方法可以做到这一点

我想另一种方法是实现一个工厂类,我可以在属性文件中说list_foo,并让工厂类将其映射到实际的类对象。这并不是很难,但也不像仅仅使用这个属性那么容易


谢谢

恐怕你不能按你希望的方式来做。泛型只是编译时的东西,不能在运行时以这种方式使用,因为


最好的方法是使用一些
list\u foo
属性,并将它们显式映射到
list
,然后在代码中这样做。但是你不能通过思考来做到这一点。

是的,我很害怕。哦,好吧,我将创建一个工厂。谢谢