/** * @param klass 类型 * @return 获得一个类型的描述符 */ public static String getTypeDescriptor(Class<?> klass) { if (klass.isPrimitive()) { if (klass == void.class) return "V"; else if (klass == int.class) return "I"; else if (klass == long.class) return "J"; else if (klass == byte.class) return "B"; else if (klass == short.class) return "S"; else if (klass == float.class) return "F"; else if (klass == double.class) return "D"; else if (klass == char.class) return "C"; else /* if(klass == boolean.class) */ return "Z"; } StringBuilder sb = new StringBuilder(); if (klass.isArray()) { return sb.append('[').append(getTypeDescriptor(klass.getComponentType())).toString(); } return sb.append('L').append(Mirror.getPath(klass)).append(';').toString(); }