【发布时间】:2013-06-27 08:04:23
【问题描述】:
我需要从ResultSet 中检索值以通过反射使用它们来调用构造函数。
我正在尝试使用 Class.cast(Object),但我总是得到一个 InvalidCastException。
这就是我所拥有的:
Object[] args = new Object[count];
Class<?>[] arr = co.getParameterTypes();
for(i = 0; i<args.length; i++){
args[i] = arr[i].cast(rs.getObject(i+1));
}
Object t;
try {
t = co.newInstance(args);
} catch (Exception e) {
throw new RuntimeException(e);
}
return (T)t;
co 是构造函数,rs 是我已经拥有的ResultSet。
【问题讨论】:
-
你能提供更多的上下文吗?表、SQL 选择和/或
co的类? -
上下文是为动态代理创建一个通用转换器。此转换器会将 ResultSet 转换为他知道的域实体。我们目前正在使用 Northwind 进行此尝试,并且该表可以是该数据库中的任何一个。构造函数类同样可以是我们应用中 Northwind 的任何域实体。
-
所以
co可以有效地属于任何类别,这就是你的意思吗? -
是的,就是这样。我们为建模 Northwind 创建的任何类
-
如果没有演员阵容会怎样?
标签: java generics jdbc resultset