100 public static String toInternalName(String pkg, String name, String... nested) { 101 if ((pkg == null || pkg.isEmpty()) && nested == null) { 102 return name; 103 } 104 105 StringBuilder sb = new StringBuilder(); 106 if (pkg != null && ! pkg.isEmpty()) { 107 sb.append(pkg.replace('.', '/')); 108 if (sb.charAt(sb.length() - 1) != '/') { 109 sb.append('/'); 110 } 111 } 112 sb.append(name); 113 for (String n: nested) { 114 sb.append('$'); 115 sb.append(n); 116 } 117 return sb.toString(); 118 } 119 120 public static String getIdentifier(Type type) { 121 return LayoutUtils.getIdentifier(type); 122 } 123 124 public static String ClassToDescriptor(Class<?> cls) { 125 if (cls.isArray()) { 126 return cls.getName(); 127 } 128 if (cls.isPrimitive()) { 129 switch (cls.getTypeName()) { 130 case "int": 131 return "I"; 132 case "long": 133 return "J"; 134 case "byte": 135 return "B"; 136 case "char": 137 return "C"; 138 case "float": 139 return "F"; 140 case "double": 141 return "D"; | 100 public static String toInternalName(String pkg, String name, String... nested) { 101 if ((pkg == null || pkg.isEmpty()) && nested == null) { 102 return name; 103 } 104 105 StringBuilder sb = new StringBuilder(); 106 if (pkg != null && ! pkg.isEmpty()) { 107 sb.append(pkg.replace('.', '/')); 108 if (sb.charAt(sb.length() - 1) != '/') { 109 sb.append('/'); 110 } 111 } 112 sb.append(name); 113 for (String n: nested) { 114 sb.append('$'); 115 sb.append(n); 116 } 117 return sb.toString(); 118 } 119 120 public static String getName(Type type) { 121 return LayoutUtils.getName(type); 122 } 123 124 public static String ClassToDescriptor(Class<?> cls) { 125 if (cls.isArray()) { 126 return cls.getName(); 127 } 128 if (cls.isPrimitive()) { 129 switch (cls.getTypeName()) { 130 case "int": 131 return "I"; 132 case "long": 133 return "J"; 134 case "byte": 135 return "B"; 136 case "char": 137 return "C"; 138 case "float": 139 return "F"; 140 case "double": 141 return "D"; |