public static String name2desc(String name) {
		StringBuilder sb = new StringBuilder();
		int c = 0, index = name.indexOf('[');
		if (index > 0) {
			c = (name.length() - index) / 2;
			name = name.substring(0, index);
		}
		while (c-- > 0)
			sb.append("[");
		if ("void".equals(name))
			sb.append(JVM_VOID);
		else if ("boolean".equals(name))
			sb.append(JVM_BOOLEAN);
		else if ("byte".equals(name))
			sb.append(JVM_BYTE);
		else if ("char".equals(name))
			sb.append(JVM_CHAR);
		else if ("double".equals(name))
			sb.append(JVM_DOUBLE);
		else if ("float".equals(name))
			sb.append(JVM_FLOAT);
		else if ("int".equals(name))
			sb.append(JVM_INT);
		else if ("long".equals(name))
			sb.append(JVM_LONG);
		else if ("short".equals(name))
			sb.append(JVM_SHORT);
		else
			sb.append('L').append(name.replace('.', '/')).append(';');
		return sb.toString();
	}
public static String name2desc ( String name ) { StringBuilder sb = new StringBuilder ( ) ; int c = 0 , index = name . indexOf ( '[' ) ; if ( index > 0 ) { c = ( name . length ( ) - index ) / 2 ; name = name . substring ( 0 , index ) ; } while ( c -- > 0 ) sb . append ( "[" ) ; if ( "void" . equals ( name ) ) sb . append ( JVM_VOID ) ; else if ( "boolean" . equals ( name ) ) sb . append ( JVM_BOOLEAN ) ; else if ( "byte" . equals ( name ) ) sb . append ( JVM_BYTE ) ; else if ( "char" . equals ( name ) ) sb . append ( JVM_CHAR ) ; else if ( "double" . equals ( name ) ) sb . append ( JVM_DOUBLE ) ; else if ( "float" . equals ( name ) ) sb . append ( JVM_FLOAT ) ; else if ( "int" . equals ( name ) ) sb . append ( JVM_INT ) ; else if ( "long" . equals ( name ) ) sb . append ( JVM_LONG ) ; else if ( "short" . equals ( name ) ) sb . append ( JVM_SHORT ) ; else sb . append ( 'L' ) . append ( name . replace ( '.' , '/' ) ) . append ( ';' ) ; return sb . toString ( ) ; }
name to desc. java.util.Map[][] => "[[Ljava/util/Map;"

@param name
name.
@return desc.