< prev index next >

src/java.base/share/classes/sun/invoke/util/BytecodeDescriptor.java

Print this page
rev 13121 : 8143926: ObjectStreamField constructor eagerly load ObjectStreamClass
Reviewed-by: TBD


  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 }
< prev index next >