# Interface: com.pnfsoftware.jeb.core.units.code.android.dex.IDexClass

This interface represents a Dex `class_def_item` object. All internal Dex types implement this interface, it is not limited to actual class types. Retrieved via [IDexUnit#getClasses()](IDexUnit#getClasses()).

## Method: getAccessFlags
- return type: `int`

Description: Get the access flags for the class.
return: a combination of access flags defined in [IDexUnit](IDexUnit)

## Method: getAnnotationDefaults
- return type: `java.util.Map<java.lang.String,com.pnfsoftware.jeb.core.units.code.android.dex.IDexValue>`

Description: A convenience method used to retrieve the list of annotation default values, if this type is an annotation type.
return: a map of default annotation values, possibly empty; this method returns null if         this object does not represent [an annotation type](#isAnnotation())

## Method: getAnnotationsDirectory
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexAnnotationsDirectory`

Description: Get the annotations directory of the class. The directory contains annotations for the class, methods, fields and methods' parameters.
return: the annotations directory

## Method: getClassTypeIndex
- return type: `int`

Description: Get the type index for this class object.
return: the index

## Method: getData
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexClassData`

Description: Get the class data.
return: the class data reference, or null if there is no class data \(eg, marker interface\)

## Method: getDexEntryIndex
- return type: `int`

Description: Retrieve the index of the dex entry that defines this class or interface.
return: an index into [IDexUnit#getDexEntries()](IDexUnit#getDexEntries()) \(of the owner , or \-1 if unknown or not         defined

## Method: getDexFileIndex
- return type: `int`

Description: 
deprecated: use [#getDexEntryIndex()](#getDexEntryIndex())
return: an index into [IDexUnit#getDexEntries()](IDexUnit#getDexEntries()), or \-1 if unknown or not defined

## Method: getField
- parameter: `effective`, type: `boolean`
- parameter: `name`, type: `java.lang.String`
- parameter: `fieldtype`, type: `java.lang.String`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexField`

Description: Retrieve a field defined in this class.
parameter: effective: the provided name and type are effective names, as opposed to original names
parameter: name: field name
parameter: fieldtype: field type \(jvm notation\)
return: a field or null if not found

## Method: getFields
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexField>`

Description: 
return: a non\-null list of fields defined in this class item

## Method: getFieldsAndMethods
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexItem>`

Description: Get the fields and methods defined in this class item.
return: a non\-null list of fields and methods defined in this class item

## Method: getInterfaceSignatures
- parameter: `effective`, type: `boolean`
- return type: `java.lang.String[]`

Description: Get the list of interfaces implemented by this class.
parameter: effective: true to return effective signatures, false to return original signatures
return: list of strings representing the FQ\-classnames of the interfaces.

## Method: getInterfaceTypeIndexes
- return type: `int[]`

Description: Get the type indexes of the interfaces implemented by this class.
return: the type indexes

## Method: getMethod
- parameter: `effective`, type: `boolean`
- parameter: `name`, type: `java.lang.String`
- parameter: `parameterTypes`, type: `java.lang.String[]`
- return type: `com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod`

Description: Retrieve a method defined in this class.
parameter: effective: the provided name and type signatures are effective names, as opposed to            original names
parameter: name: method name
parameter: parameterTypes: method parameter types \(jvm notation\)
return: a method or null if not found

## Method: getMethods
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexMethod>`

Description: 
return: a non\-null list of methods defined in this class item

## Method: getSourceStringIndex
- return type: `int`

Description: Get the string index of the file name containing the original source for this class. 

 Note: This is a debug/metadata field and should be used with caution.
return: the string index, \-1 if it is not set

## Method: getStaticInitializers
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.android.dex.IDexValue>`

Description: Get the static initializers of the class.
return: the list of initial values for static fields

## Method: getSuperTypeIndex
- return type: `int`

Description: Get the type index for the superclass of this class.
return: the superclass type index, or \-1 if none \(ie, java.lang.Object\)

## Method: getSupertypeSignature
- parameter: `effective`, type: `boolean`
- return type: `java.lang.String`

Description: Get the superclass of that class. At least java.lang.Object.
parameter: effective: true to return the effective signature, false to return the original            signature
return: FQ\-classname of the superclass

## Method: isAnnotation
- return type: `boolean`

Description: Helper method to determine whether this type is an annotation.
return: true if this type is an annotation

## Method: isAnonymousClass
- return type: `boolean`

Description: This higher\-level method indicates if this class was determined as an actual member \(nested\) class, specifically an anonymous member class. 

 It may not reflect underlying metadata information \(such as class annotations, etc.\).
return: true if the class appears to be an anonymous member class

## Method: isEnumeration
- return type: `boolean`

Description: Helper method to determine whether this type is an enumeration.
return: true if this type is an enumeration

## Method: isInterface
- return type: `boolean`

Description: Helper method to determine whether this type is an interface.
return: true if this type is an interface

## Method: isMemberClass
- return type: `boolean`

Description: This higher\-level method indicates if this class is a member class \(Dalvik terminology equivalent of Java's "nested" class\), that is, a class defined within another class or method. A member class can be `static` \(nested inside a class\), `inner` \(non\-static, nested inside a class\), `local` \(non\-static, nested inside a method\), or `anonymous` \(always non\-static, within a class or method\). \(Note that lambdas are not considered here: native lambdas are invoked using specific bytecode; desugared lambdas are implemented with standard member classes.\) 

 This method does not necessarily reflect the underlying dex class data, in particular, the annotations metadata. If a publicized inner class is deemed improper, this method will return false regardless of what metadata say.
return: true if the class looks like a valid member class

## Method: isNonStaticMemberClass
- return type: `boolean`

Description: This higher\-level method indicates if this class was determined as an actual member \(nested\) class, specifically a non\-static member class, i.e. one of inner class, local class, or anonymous class. 

 It may not reflect underlying metadata information \(such as class annotations, etc.\).
return: true if the class appears to be a non\-static member class

## Method: isStaticMemberClass
- return type: `boolean`

Description: This higher\-level method indicates if this class was determined as an actual member \(nested\) class, specifically a static member class. 

 It may not reflect underlying metadata information \(such as class annotations, etc.\).
return: true if the class appears to be a static member class

## Method: isSynthetic
- return type: `boolean`

Description: Helper method to determine whether this type is marked as synthetic, that is, auto\-generated by a compiler. This hint should not be trusted.
return: true if this type is marked synthetic

## Method: isTrueClass
- return type: `boolean`

Description: Determine if a class is a 'true' class, meaning a class which is neither an interface nor an enumeration nor an annotation.
return: true if this type is a class and not an interface, enumeration, or annotation

## Method: setName
- parameter: `name`, type: `java.lang.String`
- return type: `boolean`

Description: Rename this class or type. This method does not notify changes on success: it is up to the user to issue a [J#UnitChange](J#UnitChange) notification. 

 This method is for convenience only: users can always use the associated unit's `RENAME` action \(through the [executeAction](IInteractiveUnit#executeAction(com.pnfsoftware.jeb.core.actions.ActionContext, com.pnfsoftware.jeb.core.actions.IActionData)) method\) to rename an item generically.
parameter: name: the new name
return: success indicator

## Method: setName
- parameter: `name`, type: `java.lang.String`
- parameter: `notify`, type: `boolean`
- return type: `boolean`

Description: Rename this class or type.
parameter: name: the new name
parameter: notify: true to notify listeners of the change
return: success indicator

