Class JavaUtil

java.lang.Object
com.pnfsoftware.jeb.util.base.JavaUtil

public class JavaUtil extends Object
A collection of primitives relative to the Java language itself.
  • Method Details

    • isKeyword

      public static boolean isKeyword(String s)
      Determine whether a string is a Java keyword.
      Parameters:
      s - string to test
      Returns:
      true if the string is a Java keyword
    • isReservedLiteral

      public static boolean isReservedLiteral(String s)
      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, or false
    • isValidIdentifierName

      public static boolean isValidIdentifierName(String s)
      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

      public static String extractSimpleName(String internalClassname, boolean validate)
      Extract the simple class name from an internal class name.
      Parameters:
      internalClassname - internal class name, such as Ljava/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

      public static String extractFullName(String internalClassname, boolean validate)
      Extract the dot-separated class name from an internal class name.
      Parameters:
      internalClassname - internal class name, such as Ljava/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

      public static boolean isInternalClassname(String s, boolean validate, List<String> elements)
      Validate or parse an internal class name.
      Parameters:
      s - internal class name, such as Ljava/lang/String;
      validate - true to validate each name element as a Java identifier
      elements - optional output list receiving the slash-separated name elements
      Returns:
      true if the string is an internal class name
    • isValidInternalClassname

      public static boolean isValidInternalClassname(String s, List<String> elements)
      Validate an internal class name and optionally collect its elements.
      Parameters:
      s - internal class name
      elements - optional output list receiving the name elements
      Returns:
      true if the string is a valid internal class name
    • isValidInternalClassname

      public static boolean isValidInternalClassname(String s)
      Validate an internal class name.
      Parameters:
      s - internal class name
      Returns:
      true if the string is a valid internal class name
    • isClassname

      public static boolean isClassname(String s, boolean validate, List<String> elements)
      Validate or parse a dot-separated class name.
      Parameters:
      s - dot-separated class name
      validate - true to validate each name element as a Java identifier
      elements - optional output list receiving the name elements
      Returns:
      true if the string is a class name
    • isValidClassname

      public static boolean isValidClassname(String s, List<String> elements)
      Validate a class name in standard binary form.
      Parameters:
      s - dot-separated class name
      elements - optional output list receiving the name elements
      Returns:
      true if the string is a valid class name
    • isValidClassname

      public static boolean isValidClassname(String s)
      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

      public static String primitiveToWrapper(String primitiveType)
      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

      public static String wrapperToPrimitive(String wrapperType)
      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

      public static String primitiveToLetter(String primitiveType)
      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

      public static String letterToPrimitive(String letterType)
      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

      public static boolean isReservedMethodName(String name)
      Determine whether a method name is reserved by the JVM.
      Parameters:
      name - method name
      Returns:
      true for <init> and <clinit>
    • toJvmName

      public static String toJvmName(String javaname)
      Generate the internal binary name (jvm name) for the provided type name, as provided by Class.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's Class.getName(...)
      Returns:
      JVM internal name or descriptor
    • toJvmName

      public static String toJvmName(Class<?> c)
      Generate the internal binary name (jvm name) for the provided type name, as provided by Class.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