96 } catch (ClassNotFoundException ex) {
97 throw new TypeNotPresentException(name, ex);
98 }
99 } else if (c == '[') {
100 Class<?> t = parseSig(str, i, end, loader);
101 if (t != null)
102 t = java.lang.reflect.Array.newInstance(t, 0).getClass();
103 return t;
104 } else {
105 return Wrapper.forBasicType(c).primitiveType();
106 }
107 }
108
109 public static String unparse(Class<?> type) {
110 StringBuilder sb = new StringBuilder();
111 unparseSig(type, sb);
112 return sb.toString();
113 }
114
115 public static String unparse(MethodType type) {
116 return unparseMethod(type.returnType(), type.parameterList());
117 }
118
119 public static String unparse(Object type) {
120 if (type instanceof Class<?>)
121 return unparse((Class<?>) type);
122 if (type instanceof MethodType)
123 return unparse((MethodType) type);
124 return (String) type;
125 }
126
127 public static String unparseMethod(Class<?> rtype, List<Class<?>> ptypes) {
128 StringBuilder sb = new StringBuilder();
129 sb.append('(');
130 for (Class<?> pt : ptypes)
131 unparseSig(pt, sb);
132 sb.append(')');
133 unparseSig(rtype, sb);
134 return sb.toString();
135 }
136
137 private static void unparseSig(Class<?> t, StringBuilder sb) {
138 char c = Wrapper.forBasicType(t).basicTypeChar();
139 if (c != 'L') {
140 sb.append(c);
141 } else {
142 boolean lsemi = (!t.isArray());
143 if (lsemi) sb.append('L');
144 sb.append(t.getName().replace('.', '/'));
145 if (lsemi) sb.append(';');
146 }
147 }
148
149 }
|
96 } catch (ClassNotFoundException ex) {
97 throw new TypeNotPresentException(name, ex);
98 }
99 } else if (c == '[') {
100 Class<?> t = parseSig(str, i, end, loader);
101 if (t != null)
102 t = java.lang.reflect.Array.newInstance(t, 0).getClass();
103 return t;
104 } else {
105 return Wrapper.forBasicType(c).primitiveType();
106 }
107 }
108
109 public static String unparse(Class<?> type) {
110 StringBuilder sb = new StringBuilder();
111 unparseSig(type, sb);
112 return sb.toString();
113 }
114
115 public static String unparse(MethodType type) {
116 return unparseMethod(type.returnType(), type.parameterArray());
117 }
118
119 public static String unparse(Object type) {
120 if (type instanceof Class<?>)
121 return unparse((Class<?>) type);
122 if (type instanceof MethodType)
123 return unparse((MethodType) type);
124 return (String) type;
125 }
126
127 public static String unparseMethod(Class<?> rtype, List<Class<?>> ptypes) {
128 StringBuilder sb = new StringBuilder();
129 sb.append('(');
130 for (Class<?> pt : ptypes)
131 unparseSig(pt, sb);
132 sb.append(')');
133 unparseSig(rtype, sb);
134 return sb.toString();
135 }
136
137 public static String unparseMethod(Class<?> rtype, Class<?>[] ptypes) {
138 StringBuilder sb = new StringBuilder();
139 sb.append('(');
140 for (Class<?> pt : ptypes)
141 unparseSig(pt, sb);
142 sb.append(')');
143 unparseSig(rtype, sb);
144 return sb.toString();
145 }
146
147 private static void unparseSig(Class<?> t, StringBuilder sb) {
148 char c = getTypeChar(t);
149 if (c != 'L') {
150 sb.append(c);
151 } else {
152 boolean lsemi = (!t.isArray());
153 if (lsemi) sb.append('L');
154 sb.append(t.getName().replace('.', '/'));
155 if (lsemi) sb.append(';');
156 }
157 }
158
159 private static char getTypeChar(Class<?> cl) {
160 if (!cl.isPrimitive())
161 return 'L';
162 else if (cl == Integer.TYPE)
163 return 'I';
164 else if (cl == Byte.TYPE)
165 return 'B';
166 else if (cl == Long.TYPE)
167 return 'J';
168 else if (cl == Float.TYPE)
169 return 'F';
170 else if (cl == Double.TYPE)
171 return 'D';
172 else if (cl == Short.TYPE)
173 return 'S';
174 else if (cl == Character.TYPE)
175 return 'C';
176 else if (cl == Boolean.TYPE)
177 return 'Z';
178 else if (cl == Void.TYPE)
179 return 'V';
180 else
181 throw new InternalError();
182 }
183 }
|