Package com.pnfsoftware.jeb.util.base
Class JavaUtil
java.lang.Object
com.pnfsoftware.jeb.util.base.JavaUtil
A collection of primitives relative to the Java language itself.
-
Method Summary
Modifier and TypeMethodDescriptionstatic StringextractFullName(String internalClassname, boolean validate) Extract the dot-separated class name from an internal class name.static StringextractSimpleName(String internalClassname, boolean validate) Extract the simple class name from an internal class name.static booleanisClassname(String s, boolean validate, List<String> elements) Validate or parse a dot-separated class name.static booleanisInternalClassname(String s, boolean validate, List<String> elements) Validate or parse an internal class name.static booleanDetermine whether a string is a Java keyword.static booleanDetermine whether a string is a Java keyword or a reserved literal.static booleanisReservedMethodName(String name) Determine whether a method name is reserved by the JVM.static booleanValidate a class name in standard binary form.static booleanisValidClassname(String s, List<String> elements) Validate a class name in standard binary form.static booleanValidate a Java identifier.static booleanValidate an internal class name.static booleanisValidInternalClassname(String s, List<String> elements) Validate an internal class name and optionally collect its elements.static StringletterToPrimitive(String letterType) Convert a JVM descriptor letter to its Java primitive type name.static StringprimitiveToLetter(String primitiveType) Convert a Java primitive type name to its JVM descriptor letter.static StringprimitiveToWrapper(String primitiveType) Convert a Java primitive type name to its wrapper internal class name.static StringGenerate the internal binary name (jvm name) for the provided type name, as provided byClass.getName().static StringGenerate the internal binary name (jvm name) for the provided type name, as provided byClass.getName().static StringwrapperToPrimitive(String wrapperType) Convert a wrapper internal class name to its Java primitive type name.
-
Method Details
-
isKeyword
Determine whether a string is a Java keyword.- Parameters:
s- string to test- Returns:
- true if the string is a Java keyword
-
isReservedLiteral
Determine whether a string is a Java keyword or a reserved literal.- Parameters:
s- string to test- Returns:
- true if the string is a keyword,
null,true, orfalse
-
isValidIdentifierName
Validate a Java identifier.- Parameters:
s- identifier to validate- Returns:
- true if the string is a valid Java identifier and not a reserved literal
-
extractSimpleName
Extract the simple class name from an internal class name.- Parameters:
internalClassname- internal class name, such asLjava/lang/String;validate- true to validate each name element as a Java identifier- Returns:
- simple class name, or null if the input is invalid
-
extractFullName
Extract the dot-separated class name from an internal class name.- Parameters:
internalClassname- internal class name, such asLjava/lang/String;validate- true to validate each name element as a Java identifier- Returns:
- dot-separated class name, or null if the input is invalid
-
isInternalClassname
Validate or parse an internal class name.- Parameters:
s- internal class name, such asLjava/lang/String;validate- true to validate each name element as a Java identifierelements- optional output list receiving the slash-separated name elements- Returns:
- true if the string is an internal class name
-
isValidInternalClassname
Validate an internal class name and optionally collect its elements.- Parameters:
s- internal class nameelements- optional output list receiving the name elements- Returns:
- true if the string is a valid internal class name
-
isValidInternalClassname
Validate an internal class name.- Parameters:
s- internal class name- Returns:
- true if the string is a valid internal class name
-
isClassname
Validate or parse a dot-separated class name.- Parameters:
s- dot-separated class namevalidate- true to validate each name element as a Java identifierelements- optional output list receiving the name elements- Returns:
- true if the string is a class name
-
isValidClassname
Validate a class name in standard binary form.- Parameters:
s- dot-separated class nameelements- optional output list receiving the name elements- Returns:
- true if the string is a valid class name
-
isValidClassname
Validate a class name in standard binary form.- Parameters:
s- dot-separated class name- Returns:
- true if the string is a valid class name
-
primitiveToWrapper
Convert a Java primitive type name to its wrapper internal class name.- Parameters:
primitiveType- primitive type name- Returns:
- wrapper internal class name, or null if the input is not a primitive type
-
wrapperToPrimitive
Convert a wrapper internal class name to its Java primitive type name.- Parameters:
wrapperType- wrapper internal class name- Returns:
- primitive type name, or null if the input is not a primitive wrapper
-
primitiveToLetter
Convert a Java primitive type name to its JVM descriptor letter.- Parameters:
primitiveType- primitive type name- Returns:
- descriptor letter, or null if the input is not a primitive type
-
letterToPrimitive
Convert a JVM descriptor letter to its Java primitive type name.- Parameters:
letterType- descriptor letter- Returns:
- primitive type name, or null if the input is not a primitive descriptor
-
isReservedMethodName
Determine whether a method name is reserved by the JVM.- Parameters:
name- method name- Returns:
- true for
<init>and<clinit>
-
toJvmName
Generate the internal binary name (jvm name) for the provided type name, as provided byClass.getName().Class.getName()uses inconsistent format. Example:int -> int int[] -> [I int[][] -> [[I java.lang.Integer -> java.lang.Integer java.lang.Integer[] -> [Ljava.lang.Integer; java.lang.Integer[][] -> [Ljava.lang.Integer;
- Parameters:
javaname- name returned by Java'sClass.getName(...)- Returns:
- JVM internal name or descriptor
-
toJvmName
Generate the internal binary name (jvm name) for the provided type name, as provided byClass.getName().Class.getName()uses inconsistent format. Example:int -> int int[] -> [I int[][] -> [[I java.lang.Integer -> java.lang.Integer java.lang.Integer[] -> [Ljava.lang.Integer; java.lang.Integer[][] -> [Ljava.lang.Integer;
- Parameters:
c- a java class reference- Returns:
- JVM internal name or descriptor
-