private static void doReflect() {
try {
URL url = new URL("http://localhost/XXXX-bug/assets/Client.jar");
URLClassLoader loader = new URLClassLoader(new URL[] { url });
Class cl = loader.loadClass("com.onekr.client.UserService");
Method[] methods = cl.getDeclaredMethods();
//Loop through the methods and print out their names
for (Method method : methods) {
Class[] parameterTypes = method.getParameterTypes();
if (parameterTypes == null || parameterTypes.length == 0) {
System.out.println(method.getName());
continue;
}
for (Class parameterType : parameterTypes) {
System.out.println(method.getName()+" 参数:"+parameterType.getName());
}
}
Class ageDtoClass = loader.loadClass("com.onekr.dto.AgeDto");
Class nameDtoClass = loader.loadClass("com.onekr.dto.NameDto");
Object ins = cl.newInstance();
Method m = cl.getDeclaredMethod("getAge", nameDtoClass);
m.setAccessible(true);
Object ageDto = gson.fromJson("{firstName:'wang',lastName:'ke'}", nameDtoClass);
Object result = m.invoke(ins, ageDto);
System.out.println("result="+gson.toJson(result));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
05-05