传递一个类参数并返回该类的对象(java)

时间:2014-08-04 20:46:09

标签: java generics reflection

我有一个公共方法。 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

调用此方法时,我必须转换返回结果。有没有办法可以编写这个方法,所以我不需要转换返回的对象。

2 个答案:

答案 0 :(得分:5)

您可以使方法具有通用性,并且可以使用泛型类型参数作为参数cClass(当前为原始)的类型的返回类型和类型参数。

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