public Method getMethod(String signature) { /**/ int argStart = signature.indexOf('(') + 1; if (argStart < 0) { throw new IllegalArgumentException("Parenthesis '(' not found"); } int argEnd = signature.indexOf(')'); if (argEnd < 0) { throw new IllegalArgumentException("Parenthesis ')' not found"); } int nameStart = signature.substring(0, argStart).lastIndexOf('.') + 1; try { String className = signature.substring(0, nameStart - 1); Class theClass = getClass(className); if (theClass == null) return null; String methodName = signature.substring(nameStart, argStart - 1); String args = signature.substring(argStart, argEnd); Class[] argsTypes = classesFor(args); if (argsTypes == null) return null; return new ReflectMethod(theClass.getMethod(methodName, argsTypes), signature); } catch (Throwable t) { } /**/ LogContext.warning("Reflection not supported (Reflection.getMethod(String)"); return null; }
"The maximum array dimension is 3"); } else { // Dimension three. return getClass("[[[" + descriptorFor(className.substring(0, arrayIndex))); return getClass("[[" + descriptorFor(className.substring(0, arrayIndex))); return getClass("[" + descriptorFor(className.substring(0, arrayIndex))); return double.class; } else { return getClass(className);
public Constructor getConstructor(String signature) { int argStart = signature.indexOf('(') + 1; if (argStart < 0) { throw new IllegalArgumentException("Parenthesis '(' not found"); } int argEnd = signature.indexOf(')'); if (argEnd < 0) { throw new IllegalArgumentException("Parenthesis ')' not found"); } String className = signature.substring(0, argStart - 1); Class theClass = getClass(className); if (theClass == null) { return null; } String args = signature.substring(argStart, argEnd); if (args.length() == 0) { return new DefaultConstructor(theClass); } /**/ Class[] argsTypes = classesFor(args); if (argsTypes == null) return null; try { return new ReflectConstructor(theClass.getConstructor(argsTypes), signature); } catch (NoSuchMethodException e) { } /**/ LogContext.warning("Reflection not supported (Reflection.getConstructor(String)"); return null; }