# Class: com.pnfsoftware.jeb.core.units.code.java.JavaTypeUtil

Utility methods to generate or verify Java type names and signatures.

## Constructor: JavaTypeUtil


## Static Method: checkLegalInternalClassname
- parameter: `classname`, type: `java.lang.String`

Description: 
parameter: classname: 

## Static Method: generateClassnameStandardRepresentation
- parameter: `classname`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Transform an internal classname representation to its external representation. 

 Examples: 
 
- **Lcom/bla/Animal;** becomes **com.bla.Animal**
-  
- **Lcom/bla/Animal$Trainer;** becomes **com.bla.Animal$Trainer**
-
parameter: classname: internal representation
return: 

## Static Method: generateClassnameWithoutPackage
- parameter: `classname`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Get the non fully\-qualified internal representation of the class name.
 Example: `Lcom/pnfsoftware/Raasta;` will generate `LRaasta;`
parameter: classname: internal representation
return: 

## Static Method: generatePackageNameStandardRepresentation
- parameter: `classname`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Extract the standard representation of a package name provided the internal representation of the FQ classname.
 Example: `Lcom/foo/Crap$Bla;` will generate `com.foo`
parameter: classname: internal representation
return: standard representation of the package containing the provided classname

## Static Method: isLegalInternalClassname
- parameter: `classname`, type: `java.lang.String`
- return type: `boolean`

Description: Check whether the class \(or interface\) name is a valid Java object type internal representation. 

 Example: `Labc/def/Bla;`
parameter: classname: 
return: 

## Static Method: parseFullPrototype
- parameter: `proto`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexPrototype`
- parameter: `tf`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaTypeFactory`
- return type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType[]`

Description: Parse a DEX prototype to an array of IR/AST [IJavaType](IJavaType)s.
parameter: proto: 
parameter: tf: 
return: 

## Static Method: parseMethodParameters
- parameter: `dex`, type: `com.pnfsoftware.jeb.core.units.code.android.IDexUnit`
- parameter: `m`, type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`
- parameter: `tf`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaTypeFactory`
- return type: `java.util.SortedMap<java.lang.Integer,com.pnfsoftware.jeb.core.units.code.java.IJavaType>`

Description: Determine method parameters and register association.
parameter: dex: DEX Parser
parameter: m: internal, non\-abstract method \(must contain bytecode\)
return: Map of \(register number, parameter type\), including the 'this' pointer if any. The         return value, if any, is mapped to fake register number \-1.
throws: If the frame is too small, or the type cannot be processed.

## Static Method: parseShortyPrototype
- parameter: `shorty`, type: `java.lang.String`
- parameter: `tf`, type: `com.pnfsoftware.jeb.core.units.code.java.IJavaTypeFactory`
- return type: `com.pnfsoftware.jeb.core.units.code.java.IJavaType[]`

Description: Parse a DEX shorty prototype string to an array of IR/AST [IJavaType](IJavaType)s. Note that a type factory is not needed as no detailed complex type is created \(shorty prototypes simply indicate if a type is an object, they do not define the object type itself\).
parameter: shorty: 
parameter: tf: 
return: Array of types:         
         
- index=0 : return
-          
- index=1\+ : arguments
-          

         Note: the instance \(first argument for non\-static methods\) is NOT present\!

