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



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

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参数

最新更新