private void format(Type type, StringBuilder sb) { if (type instanceof Class) { Class classType = (Class)type; if (classType.isArray()) { format(classType.getComponentType(), sb); sb.append("[]"); } else { sb.append(classType.getName()); } } else if (type instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType)type; format(parameterizedType.getRawType(), sb); sb.append('<'); Type[] typeArguments = parameterizedType.getActualTypeArguments(); for (int i = 0;i < typeArguments.length;i++) { if (i > 0) { sb.append(','); } format(typeArguments[i], sb); } sb.append('>'); } else if (type instanceof GenericArrayType) { GenericArrayType arrayType = (GenericArrayType)type; format(arrayType.getGenericComponentType(), sb); sb.append("[]"); } else { throw new UnsupportedOperationException("todo " + type); } }
private void format(Type type, StringBuilder sb) { if (type instanceof Class) { Class classType = (Class)type; if (classType.isArray()) { format(classType.getComponentType(), sb); sb.append("[]"); } else { sb.append(classType.getName()); } } else if (type instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType)type; format(parameterizedType.getRawType(), sb); sb.append('<'); Type[] typeArguments = parameterizedType.getActualTypeArguments(); for (int i = 0;i < typeArguments.length;i++) { if (i > 0) { sb.append(','); } format(typeArguments[i], sb); } sb.append('>'); } else if (type instanceof GenericArrayType) { GenericArrayType arrayType = (GenericArrayType)type; format(arrayType.getGenericComponentType(), sb); sb.append("[]"); } else { throw new UnsupportedOperationException("todo " + type); } }
public MethodHandle(Method method) throws NullPointerException { if (method == null) { throw new NullPointerException("No null method accepted"); } Type[] parameterTypes = method.getGenericParameterTypes(); String[] parameters = new String[parameterTypes.length]; StringBuilder sb = new StringBuilder(); for (int i = 0;i < parameters.length;i++) { format(parameterTypes[i], sb); parameters[i] = sb.toString(); sb.setLength(0); } // this.type = method.getDeclaringClass().getName(); this.name = method.getName(); this.parameters = parameters.clone(); this.toString = null; }
public MethodHandle(Method method) throws NullPointerException { if (method == null) { throw new NullPointerException("No null method accepted"); } Type[] parameterTypes = method.getGenericParameterTypes(); String[] parameters = new String[parameterTypes.length]; StringBuilder sb = new StringBuilder(); for (int i = 0;i < parameters.length;i++) { format(parameterTypes[i], sb); parameters[i] = sb.toString(); sb.setLength(0); } // this.type = method.getDeclaringClass().getName(); this.name = method.getName(); this.parameters = parameters.clone(); this.toString = null; }