/**
* getDeclaredConstructor(Class<?>... parameterTypes)
* 这个方法会返回制定参数类型的所有构造器,包括public的和非public的,当然也包括private的。
* getDeclaredConstructors()的返回结果就没有参数类型的过滤了。
*
* 再来看getConstructor(Class<?>... parameterTypes)
* 这个方法返回的是上面那个方法返回结果的子集,只返回制定参数类型访问权限是public的构造器。
* getConstructors()的返回结果同样也没有参数类型的过滤。
*
*/
public static void main(String[] args) {
URL confUrl = WadeSafeConf.class.getResource("/");
String confFile = (confUrl==null?"":confUrl) + "WadeSafe.conf";
if(confFile.startsWith("file:")){
confFile = confFile.substring(5);
}
WadeSafeConf wadeSafeConf = new WadeSafeConf(confFile);
String beanCls = wadeSafeConf.getConfParam("conf", "cfg.bean.class","com.wade.safe.bean.impl.WadeSimpleBean");
System.out.println(beanCls);
Class c = null;
try {
c = Class.forName(beanCls);
Method[] methods = c.getDeclaredMethods();
for (int i=0;i<methods.length;i++){
String methodName=methods[i].getName();
System.out.println(methods[i].getReturnType().getName());
// Class<?>[] parameterTypes = methods[i].getParameterTypes();
// for(int j=0;j<parameterTypes.length;j++){
// String parameterName = parameterTypes[j].getName();
// System.out.println("方法"+methodName+"的参数类型是"+parameterName);
// }
}
// Constructor con = c.getConstructor(); // 构造器调用
// Object wadeSimpleBean = con.newInstance();
// Method verifyLimitStaff = c.getMethod("verifyLimitStaff", WadeRequestWrapper.class, HttpServletResponse.class);
// Object ob1 = verifyLimitStaff.invoke(wadeSimpleBean);
// System.out.println(ob1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}