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 if (t.isPrimitive()) {
149 sb.append(getPrimitiveTypeChar(t));
150 } else {
151 boolean lsemi = (!t.isArray());
152 if (lsemi) sb.append('L');
153 sb.append(t.getName().replace('.', '/'));
154 if (lsemi) sb.append(';');
155 }
156 }
157
158 private static char getPrimitiveTypeChar(Class<?> cl) {
159 if (cl == Integer.TYPE)
160 return 'I';
161 else if (cl == Byte.TYPE)
162 return 'B';
163 else if (cl == Long.TYPE)
164 return 'J';
165 else if (cl == Float.TYPE)
166 return 'F';
167 else if (cl == Double.TYPE)
168 return 'D';
169 else if (cl == Short.TYPE)
170 return 'S';
171 else if (cl == Character.TYPE)
172 return 'C';
173 else if (cl == Boolean.TYPE)
174 return 'Z';
175 else if (cl == Void.TYPE)
176 return 'V';
177 else
178 throw new InternalError();
179 }
180 }
|