public static Method getMethod(Class<?> clazz, String name, Class<?>... parameterTypes) { Class<?>[] p = DataType.convertToPrimitive(parameterTypes); for (Method m : clazz.getMethods()) if (m.getName().equals(name) && DataType.equalsArray(DataType.convertToPrimitive(m.getParameterTypes()), p)) return m; return null; }
public static Object invokeMethod(Class<?> clazz, String name, Object instance, Object... args) throws Exception { return getMethod(clazz, name, DataType.convertToPrimitive(args)).invoke(instance, args); }
public static Object newInstance(Class<?> clazz, Object... args) throws Exception { return getConstructor(clazz, DataType.convertToPrimitive(args)).newInstance(args); }
public static Constructor<?> getConstructor(Class<?> clazz, Class<?>... parameterTypes) { Class<?>[] p = DataType.convertToPrimitive(parameterTypes); for (Constructor<?> c : clazz.getConstructors()) if (DataType.equalsArray(DataType.convertToPrimitive(c.getParameterTypes()), p)) return c; return null; }