public static String getDescriptor(Constructor<?> method) { return "(" + classArrayToDescriptorString(method.getParameterTypes()) + ")V"; }
public static String methodSignitureToDescriptor(Class<?> returnType, Class<?>... params) { return "(" + classArrayToDescriptorString(params) + ")" + classToStringRepresentation(returnType); }
public static String getDescriptor(Method method) { return "(" + classArrayToDescriptorString(method.getParameterTypes()) + ")" + classToStringRepresentation(method.getReturnType()); }
public static Constructor<?> getDeclaredConstructor(Class<?> clazz, Class<?>... parameters) throws NoSuchMethodException { ClassData cd = ClassDataStore.instance().getModifiedClassData(clazz.getClassLoader(), Descriptor.toJvmName(clazz.getName())); if (cd == null || !cd.isReplaceable()) { return clazz.getDeclaredConstructor(parameters); } String args = '(' + DescriptorUtils.classArrayToDescriptorString(parameters) + ')'; MethodData md = cd.getMethodData("<init>", args); if (md == null) { return clazz.getDeclaredConstructor(parameters); } switch (md.getType()) { case NORMAL: return clazz.getDeclaredConstructor(parameters); case FAKE_CONSTRUCTOR: try { Class<?> c = clazz.getClassLoader().loadClass(md.getClassName()); return c.getDeclaredConstructor(parameters); } catch (NoSuchMethodException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } } throw new NoSuchMethodException(); }
public static Constructor<?> getConstructor(Class<?> clazz, Class<?>... parameters) throws NoSuchMethodException { ClassData cd = ClassDataStore.instance().getModifiedClassData(clazz.getClassLoader(), Descriptor.toJvmName(clazz.getName())); if (cd == null || !cd.isReplaceable()) { return clazz.getConstructor(parameters); } String args = '(' + DescriptorUtils.classArrayToDescriptorString(parameters) + ')'; MethodData md = cd.getMethodData("<init>", args); if (md == null) { return clazz.getConstructor(parameters); } switch (md.getType()) { case NORMAL: return clazz.getConstructor(parameters); case FAKE_CONSTRUCTOR: try { Class<?> c = clazz.getClassLoader().loadClass(md.getClassName()); return c.getConstructor(parameters); } catch (NoSuchMethodException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } } throw new NoSuchMethodException(); }
public static Method getDeclaredMethod(Class<?> clazz, String name, Class<?>... parameters) throws NoSuchMethodException { ClassData cd = ClassDataStore.instance().getModifiedClassData(clazz.getClassLoader(), Descriptor.toJvmName(clazz.getName())); if (cd == null || !cd.isReplaceable()) { return clazz.getDeclaredMethod(name, parameters); } String args; if (parameters != null) { args = '(' + DescriptorUtils.classArrayToDescriptorString(parameters) + ')'; } else { args = "()"; } MethodData md = cd.getMethodData(name, args); if (md == null) { return clazz.getDeclaredMethod(name, parameters); } switch (md.getType()) { case NORMAL: return clazz.getDeclaredMethod(name, parameters); case FAKE: try { Class<?> c = clazz.getClassLoader().loadClass(md.getClassName()); return c.getDeclaredMethod(name, parameters); } catch (NoSuchMethodException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } } throw new NoSuchMethodException(); }
return clazz.getMethod(name, parameters); String args = '(' + DescriptorUtils.classArrayToDescriptorString(parameters) + ')'; MethodData md = cd.getMethodData(name, args); Class<?> superClass = clazz;