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

use*_*195 0 java generics reflection

我有一个公共方法.公共方法声明为

public Object createUIBean(Class c, HttpServletRequest request) {
  Object o = c.newInstance() ;
  setRequestParams(o, request) ;
  return o ;
} // try catch block omitted for reasons of brevity
Run Code Online (Sandbox Code Playgroud)

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

rge*_*man 5

您可以使通用的方法,你可以使用泛型类型参数作为返回类型和参数的类型的类型参数c,Class(这是目前生).

public <T> T createUIBean(Class<T> c, HttpServletRequest request) {
  T o = c.newInstance();
  setRequestParams(o, request) ;
  return o ;
} 
Run Code Online (Sandbox Code Playgroud)

此外,Class.forName(c.getName()).newInstance() ;c.newInstance()完成工作时创建一个简单的实例太多了.