private static BaseExtracter getInstance(String className, ExtractParamBean bean) throws Exception {
Class extractClass = Class.forName(className);
Class[] c = new Class[]{ExtractParamBean.class};
Constructor constructor = extractClass.getConstructor(c);
return (BaseExtracter)constructor.newInstance(bean);
}
以前写的些方法都是这样干的:
Class cls = Class.forName(“className”);
*** inst = cls.newInstance();
那样只能调用默认构造函数,也就是没有参数的,前几天要整个反射类,调用的是有参构造函数,解决如下:
Class cls = Class.forName(className);
Class[] paramTypes = { String.class, String.class, String.class,
String.class };
Object[] params = {bankCde, branchCde, buzDate, loanNo}; // 方法传入的参数
Constructor con = cls.getConstructor(paramTypes); //主要就是这句了
BatcherBase base = (BatcherBase) con.newInstance(params); //BatcherBase 为自定义类
注:BatcherBase 有构造函数如下
public BatcherBase(String bankCde, String branchCde, String buzDate,String loanNo)