# Interface: com.pnfsoftware.jeb.core.units.code.android.dex.IDexType
- Super interfaces: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem`, `com.pnfsoftware.jeb.core.units.code.ICodeType`

This interface represents a reference to a dex type used in the dex. It may be internal or  external. If the type is internal \(defined in the dex\), the implementation should be located in  the associated [IDexClass](com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass.md) object. Types can be retrieved via [IDexUnit](com.pnfsoftware.jeb.core.units.code.android.IDexUnit.md).

## Abstract Method: getDependantTypes
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.dex.IDexType>`

Description: Retrieve the list of array types based on this type.
return: the dependent array types

## Abstract Method: getDimensions
- return type: `int`

Description: Get the array type dimensions.  

  Examples: `[I` \(that is, `int[]`\) will return 1, `[[J` \(that is,  `long[][]`\) will return 2
return: the number of dimensions

## Abstract Method: getImplementingClass
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass`

Description: Retrieve the implementation of this type, if it is internal.

## Abstract Method: getMasterType
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexType`

Description: Retrieve the base type of an array type.  

  Example: if this type is `[[I`, the method will return the type object for `I`
return: the array base type, or this type if it is not an array

## Abstract Method: getNonArrayClass
- return type: `java.lang.String`

Description: Retrieve the non\-array signature of a class or interface type. Will return null for  primitives or arrays of primitives.  

  Example: type is `[La/b/Foo` the method will return `La/b/Foo`
return: the non\-array class signature, or null if not applicable

## Abstract Method: getSignature
- return type: `java.lang.String`

Description: Generate the type signature. The generated signature represents the effective name in  internal form.

## Abstract Method: getSignature
- parameter: `effective`, type: `boolean`
- parameter: `internal`, type: `boolean`
- return type: `java.lang.String`


## Abstract Method: getSignature
- parameter: `effective`, type: `boolean`
- parameter: `internal`, type: `boolean`
- parameter: `qualifiedNames`, type: `boolean`
- return type: `java.lang.String`

Description: Generate the type signature.
parameter: effective: true to use the effective names \(renames\), false to use the original names
parameter: internal: true to generate an internal signature \(Lcom/abc/Foo;\), false to generate a             user\-friendly signature \(com.abc.Foo\)
parameter: qualifiedNames: true to generate qualified names \(a.b.c.Foo\), false to generate simple             type names \(Foo\)
return: the type signature

## Abstract Method: isArray
- return type: `boolean`

Description: Determine whether the type is an array type.
return: true if the type is an array type

## Abstract Method: isArrayOfPrimitive
- return type: `boolean`

Description: Determine whether the type is an array of primitives.
return: true if the type is an array of primitive values

## Abstract Method: isClass
- return type: `boolean`

Description: Determine if the type is a class or interface \(not an array, not a primitive type\)
return: true if the type is a class or interface type

## Abstract Method: isPrimitive
- return type: `boolean`

Description: Determine whether the type is a primitive type.
return: true if the type is a primitive type

