我有一个公共方法。公共方法声明为
public Object createUIBean(Class c, HttpServletRequest request) {
Object o = c.newInstance() ;
setRequestParams(o, request) ;
return o ;
} // try catch block omitted for reasons of brevity
调用该方法时,必须强制转换返回结果。有没有办法我可以写这个方法,所以我不需要强制转换返回的对象。
您可以使该方法泛型,并且您可以使用泛型类型参数作为返回类型和类型参数的类型c
, Class
(目前是raw)。
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()
可以完成这项工作。
我不确定这是否是你想要的,但也许你正在寻找类似泛型方法的东西
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
参数