我有一个公共方法。 public方法声明为
public Object createUIBean(Class c, HttpServletRequest request) {
Object o = c.newInstance() ;
setRequestParams(o, request) ;
return o ;
} // try catch block omitted for reasons of brevity
调用此方法时,我必须转换返回结果。有没有办法可以编写这个方法,所以我不需要转换返回的对象。
答案 0 :(得分:5)
您可以使方法具有通用性,并且可以使用泛型类型参数作为参数c
,Class
(当前为原始)的类型的返回类型和类型参数。
public <T> T createUIBean(Class<T> c, HttpServletRequest request) {
T o = c.newInstance();
setRequestParams(o, request) ;
return o ;
}
另外,Class.forName(c.getName()).newInstance() ;
在c.newInstance()
完成工作时创建一个简单的实例太多了。
答案 1 :(得分:3)
我不确定这是不是你想要的,但也许你正在寻找像generic method
这样的东西public <T> T createUIBean(Class<T> c, HttpServletRequest request) {
T o = c.newInstance() ;// "Class.forName(c.getName())" is equivalent of "c"
setRequestParams(o, request) ;
return o ;
}
现在返回的类型T
将基于用作T
参数的类型Class<T> c
。