StringBuffer buf = new StringBuffer(); while (klass.isArray()) { buf.append('['); klass = klass.getComponentType(); } if (klass.isPrimitive()) { if (klass == Integer.TYPE) { buf.append('I'); } else if (klass == Byte.TYPE) { buf.append('B'); } else if (klass == Long.TYPE) { buf.append('J'); } else if (klass == Float.TYPE) { buf.append('F'); } else if (klass == Double.TYPE) { buf.append('D'); } else if (klass == Short.TYPE) { buf.append('S'); } else if (klass == Character.TYPE) { buf.append('C'); } else if (klass == Boolean.TYPE) { buf.append('Z'); } else if (klass == Void.TYPE) { buf.append('V'); } else { throw new InternalError(); } } else { buf.append('L' + klass.getName().replace('.', '/') + ';'); } return buf.toString();
return Type.getDescriptor(klass);
    public static String getClassSignature(Class klass) {        StringBuffer buf = new StringBuffer();        while (klass.isArray()) {            buf.append('[');            klass = klass.getComponentType();        }        if (klass.isPrimitive()) {            if (klass == Integer.TYPE) {                buf.append('I');            } else if (klass == Byte.TYPE) {                buf.append('B');            } else if (klass == Long.TYPE) {                buf.append('J');            } else if (klass == Float.TYPE) {                buf.append('F');            } else if (klass == Double.TYPE) {                buf.append('D');            } else if (klass == Short.TYPE) {                buf.append('S');            } else if (klass == Character.TYPE) {                buf.append('C');            } else if (klass == Boolean.TYPE) {                buf.append('Z');            } else if (klass == Void.TYPE) {                buf.append('V');            } else {                throw new InternalError();            }        } else {            buf.append('L' + klass.getName().replace('.', '/') + ';');        }        return buf.toString();    }