< prev index next >

src/java.base/share/classes/java/lang/constant/ClassDesc.java

Print this page
rev 54588 : 8212975: ClassDesc should have a full name method
Reviewed-by: vromero

*** 289,314 **** * suffixed with the appropriate number of {@code []} pairs for array types. * * @return the human-readable name */ default String displayName() { ! if (isPrimitive()) ! return Wrapper.forBasicType(descriptorString().charAt(0)).primitiveSimpleName(); ! else if (isClassOrInterface()) { ! return descriptorString().substring(Math.max(1, descriptorString().lastIndexOf('/') + 1), ! descriptorString().length() - 1); } ! else if (isArray()) { int depth = ConstantUtils.arrayDepth(descriptorString()); ClassDesc c = this; for (int i=0; i<depth; i++) c = c.componentType(); ! return c.displayName() + "[]".repeat(depth); ! } ! else throw new IllegalStateException(descriptorString()); } /** * Returns a field type descriptor string for this type * * @return the descriptor string --- 289,345 ---- * suffixed with the appropriate number of {@code []} pairs for array types. * * @return the human-readable name */ default String displayName() { ! return displayName(false); } ! ! /** ! * Returns a human-readable name for the type described by this ! * descriptor. ! * ! * @implSpec ! * <p>The default implementation returns the name ! * (e.g., {@code int}) for primitive types, the class name for ! * class or interface types (e.g., {@code java.lang.String}), ! * or the name of the component type with the appropriate ! * number of {@code []} pairs for array types ! * (e.g., {@code java.lang.String[]}). ! * <p>The actual class name returned will be full qualified if ! * {@code detail} is {@code true}, otherwise the simple class ! * name is returned. ! * ! * @param detail - if true returns full class name, ! * else the simple class name ! * ! * @return the full human-readable name ! */ ! default String displayName(boolean detail) { ! if (isPrimitive()) { ! return Wrapper.forBasicType(descriptorString() ! .charAt(0)) ! .primitiveSimpleName(); ! } else if (isClassOrInterface()) { ! String internalClassName = ConstantUtils.dropFirstAndLastChar(descriptorString()); ! String binaryClassName = internalToBinary(internalClassName); ! if (detail) { ! return binaryClassName; ! ! } ! int index = binaryClassName.lastIndexOf('.'); ! return index == -1 ? binaryClassName : binaryClassName.substring(index + 1); ! } else if (isArray()) { int depth = ConstantUtils.arrayDepth(descriptorString()); ClassDesc c = this; for (int i=0; i<depth; i++) c = c.componentType(); ! return c.displayName(detail) + "[]".repeat(depth); ! } else { throw new IllegalStateException(descriptorString()); } + } /** * Returns a field type descriptor string for this type * * @return the descriptor string
< prev index next >