Package jadx.core.dex.nodes
Class ClassNode
- java.lang.Object
-
- jadx.core.dex.attributes.AttrNode
-
- jadx.core.dex.attributes.nodes.LineAttrNode
-
- jadx.core.dex.attributes.nodes.NotificationAttrNode
-
- jadx.core.dex.nodes.ClassNode
-
- All Implemented Interfaces:
IRenameNode,ICodeAnnotation,ICodeNodeRef,IAttributeNode,ILineAttributeNode,ICodeNode,IDexNode,ILoadable,IPackageUpdate,IUsageInfoNode,java.lang.Comparable<ClassNode>
public class ClassNode extends NotificationAttrNode implements ILoadable, ICodeNode, IPackageUpdate, java.lang.Comparable<ClassNode>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jadx.api.metadata.ICodeAnnotation
ICodeAnnotation.AnnType
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddCodegenDep(ClassNode dep)voidaddField(FieldNode fld)voidaddInlinedClass(ClassNode cls)voidaddInnerClass(ClassNode cls)static ClassNodeaddSyntheticClass(RootNode root, ClassInfo clsInfo, int accessFlags)static ClassNodeaddSyntheticClass(RootNode root, java.lang.String name, int accessFlags)booleancheckProcessed()intcompareTo(@NotNull ClassNode o)ICodeInfodecompile()ICodeInfodecompileWithMode(DecompilationMode mode)WARNING: Slow operation! Use with caution!voiddeepUnload()voidensureProcessed()booleanequals(java.lang.Object o)AccessInfogetAccessFlags()java.lang.StringgetAlias()ICodeAnnotation.AnnTypegetAnnType()ClassInfogetClassInfo()Internal class info (don't use in code generation and external api).@Nullable MethodNodegetClassInitMth()@Nullable jadx.api.plugins.input.data.IClassDatagetClsData()Low level class data access.ICodeInfogetCode()@Nullable ICodeInfogetCodeFromCache()java.util.List<ClassNode>getCodegenDeps()@Nullable IFieldInfoRefgetConstField(java.lang.Object obj)@Nullable IFieldInfoRefgetConstField(java.lang.Object obj, boolean searchGlobal)@Nullable IFieldInfoRefgetConstFieldByLiteralArg(LiteralArg arg)ClassNodegetDeclaringClass()@Nullable MethodNodegetDefaultConstructor()java.util.List<ClassNode>getDependencies()java.lang.StringgetDisassembledCode()protected voidgetDisassembledCode(SimpleCodeWriter code)java.util.List<FieldNode>getFields()java.lang.StringgetFullName()java.util.List<ArgType>getGenericTypeParameters()java.util.List<ClassNode>getInlinedClasses()voidgetInnerAndInlinedClassesRecursive(java.util.Set<ClassNode> resultClassesSet)Get all inner and inlined classes recursivelyjava.util.List<ClassNode>getInnerClasses()java.lang.StringgetInputFileName()java.util.List<ArgType>getInterfaces()JavaClassgetJavaNode()LoadStagegetLoadStage()java.util.List<MethodNode>getMethods()java.lang.StringgetName()java.lang.StringgetPackage()PackageNodegetPackageNode()ClassNodegetParentClass()java.lang.StringgetRawName()java.lang.StringgetShortName()Deprecated.ProcessStategetState()@Nullable ArgTypegetSuperClass()ClassNodegetTopParentClass()intgetTotalDepsCount()ArgTypegetType()java.util.List<ClassNode>getUseIn()java.util.List<MethodNode>getUseInMth()inthashCode()booleanhasNotGeneratedParent()booleanisAnonymous()booleanisEnum()booleanisInner()booleanisSynthetic()booleanisTopClass()voidload()On demand loadingvoidonParentPackageUpdate(PackageNode updatedPkg)voidreloadAtCodegenStage()ICodeInforeloadCode()voidremoveAlias()voidremoveDependency(ClassNode dep)voidrename(java.lang.String newName)Change class name and package (if full name provided) Leading dot can be used to move to default package.RootNoderoot()FieldNodesearchField(FieldInfo field)FieldNodesearchFieldByName(java.lang.String name)FieldNodesearchFieldByNameAndType(FieldInfo field)FieldNodesearchFieldByShortId(java.lang.String shortId)MethodNodesearchMethod(MethodInfo mth)MethodNodesearchMethodByShortId(java.lang.String shortId)@Nullable MethodNodesearchMethodByShortName(java.lang.String name)Return first method by original short name Note: methods are not unique by name (class can have several methods with same name but different signature)voidsetAccessFlags(AccessInfo accessFlags)voidsetCodegenDeps(java.util.List<ClassNode> codegenDeps)voidsetDependencies(java.util.List<ClassNode> dependencies)voidsetJavaNode(JavaClass javaNode)voidsetLoadStage(LoadStage loadStage)voidsetState(ProcessState state)voidsetUseIn(java.util.List<ClassNode> useIn)voidsetUseInMth(java.util.List<MethodNode> useInMth)java.lang.StringtoString()java.lang.StringtypeName()voidunload()Free resourcesvoidunloadCode()voidunloadFromCache()voidupdateGenericClsData(java.util.List<ArgType> generics, ArgType superClass, java.util.List<ArgType> interfaces)voidupdateParentClass()voidvisitParentClasses(java.util.function.Consumer<ClassNode> consumer)voidvisitSuperTypes(java.util.function.BiConsumer<ArgType,ArgType> consumer)-
Methods inherited from class jadx.core.dex.attributes.nodes.NotificationAttrNode
addCodeComment, addCodeComment, addDebugComment, addError, addInfoComment, addWarn, addWarnComment, addWarnComment, checkCommentsLevel, getCommentsLevel
-
Methods inherited from class jadx.core.dex.attributes.nodes.LineAttrNode
addSourceLineFrom, copyLines, getDefPosition, getSourceLine, setDefPosition, setSourceLine
-
Methods inherited from class jadx.core.dex.attributes.AttrNode
add, addAttr, addAttr, addAttr, addAttrs, clearAttributes, contains, contains, copyAttributeFrom, copyAttributesFrom, get, getAll, getAnnotation, getAttributesString, getAttributesStringsList, isAttrStorageEmpty, remove, remove, removeAttr, rewriteAttributeFrom, unloadAttributes
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jadx.core.dex.attributes.IAttributeNode
add, addAttr, addAttr, addAttrs, clearAttributes, contains, contains, copyAttributeFrom, copyAttributesFrom, get, getAll, getAnnotation, getAttributesString, getAttributesStringsList, isAttrStorageEmpty, remove, remove, removeAttr, rewriteAttributeFrom
-
Methods inherited from interface jadx.api.metadata.ICodeNodeRef
getDefPosition, setDefPosition
-
-
-
-
Constructor Detail
-
ClassNode
public ClassNode(RootNode root, jadx.api.plugins.input.data.IClassData cls)
-
-
Method Detail
-
updateGenericClsData
public void updateGenericClsData(java.util.List<ArgType> generics, ArgType superClass, java.util.List<ArgType> interfaces)
-
addSyntheticClass
public static ClassNode addSyntheticClass(RootNode root, java.lang.String name, int accessFlags)
-
addSyntheticClass
public static ClassNode addSyntheticClass(RootNode root, ClassInfo clsInfo, int accessFlags)
-
checkProcessed
public boolean checkProcessed()
-
ensureProcessed
public void ensureProcessed()
-
decompile
public ICodeInfo decompile()
-
decompileWithMode
public ICodeInfo decompileWithMode(DecompilationMode mode)
WARNING: Slow operation! Use with caution!
-
getCode
public ICodeInfo getCode()
-
reloadCode
public ICodeInfo reloadCode()
-
unloadCode
public void unloadCode()
-
deepUnload
public void deepUnload()
-
unloadFromCache
public void unloadFromCache()
-
getCodeFromCache
@Nullable public @Nullable ICodeInfo getCodeFromCache()
-
load
public void load()
Description copied from interface:ILoadableOn demand loading
-
unload
public void unload()
Description copied from interface:ILoadableFree resources
-
getSuperClass
@Nullable public @Nullable ArgType getSuperClass()
-
getInterfaces
public java.util.List<ArgType> getInterfaces()
-
getGenericTypeParameters
public java.util.List<ArgType> getGenericTypeParameters()
-
getType
public ArgType getType()
-
getMethods
public java.util.List<MethodNode> getMethods()
-
getFields
public java.util.List<FieldNode> getFields()
-
addField
public void addField(FieldNode fld)
-
getConstField
@Nullable public @Nullable IFieldInfoRef getConstField(java.lang.Object obj)
-
getConstField
@Nullable public @Nullable IFieldInfoRef getConstField(java.lang.Object obj, boolean searchGlobal)
-
getConstFieldByLiteralArg
@Nullable public @Nullable IFieldInfoRef getConstFieldByLiteralArg(LiteralArg arg)
-
searchFieldByName
public FieldNode searchFieldByName(java.lang.String name)
-
searchFieldByShortId
public FieldNode searchFieldByShortId(java.lang.String shortId)
-
searchMethod
public MethodNode searchMethod(MethodInfo mth)
-
searchMethodByShortId
public MethodNode searchMethodByShortId(java.lang.String shortId)
-
searchMethodByShortName
@Nullable public @Nullable MethodNode searchMethodByShortName(java.lang.String name)
Return first method by original short name Note: methods are not unique by name (class can have several methods with same name but different signature)
-
getDeclaringClass
public ClassNode getDeclaringClass()
- Specified by:
getDeclaringClassin interfaceICodeNode
-
getParentClass
public ClassNode getParentClass()
-
updateParentClass
public void updateParentClass()
-
rename
public void rename(java.lang.String newName)
Change class name and package (if full name provided) Leading dot can be used to move to default package. Package for inner classes can't be changed.- Specified by:
renamein interfaceIRenameNode
-
removeAlias
public void removeAlias()
-
onParentPackageUpdate
public void onParentPackageUpdate(PackageNode updatedPkg)
- Specified by:
onParentPackageUpdatein interfaceIPackageUpdate
-
getPackageNode
public PackageNode getPackageNode()
-
getTopParentClass
public ClassNode getTopParentClass()
-
visitParentClasses
public void visitParentClasses(java.util.function.Consumer<ClassNode> consumer)
-
visitSuperTypes
public void visitSuperTypes(java.util.function.BiConsumer<ArgType,ArgType> consumer)
-
hasNotGeneratedParent
public boolean hasNotGeneratedParent()
-
getInnerClasses
public java.util.List<ClassNode> getInnerClasses()
-
getInlinedClasses
public java.util.List<ClassNode> getInlinedClasses()
-
getInnerAndInlinedClassesRecursive
public void getInnerAndInlinedClassesRecursive(java.util.Set<ClassNode> resultClassesSet)
Get all inner and inlined classes recursively- Parameters:
resultClassesSet- all identified inner and inlined classes are added to this set
-
addInnerClass
public void addInnerClass(ClassNode cls)
-
addInlinedClass
public void addInlinedClass(ClassNode cls)
-
isEnum
public boolean isEnum()
-
isAnonymous
public boolean isAnonymous()
-
isSynthetic
public boolean isSynthetic()
-
isInner
public boolean isInner()
-
isTopClass
public boolean isTopClass()
-
getClassInitMth
@Nullable public @Nullable MethodNode getClassInitMth()
-
getDefaultConstructor
@Nullable public @Nullable MethodNode getDefaultConstructor()
-
getAccessFlags
public AccessInfo getAccessFlags()
- Specified by:
getAccessFlagsin interfaceICodeNode
-
setAccessFlags
public void setAccessFlags(AccessInfo accessFlags)
- Specified by:
setAccessFlagsin interfaceICodeNode
-
getRawName
public java.lang.String getRawName()
-
getClassInfo
public ClassInfo getClassInfo()
Internal class info (don't use in code generation and external api).
-
getName
public java.lang.String getName()
-
getAlias
public java.lang.String getAlias()
-
getShortName
@Deprecated public java.lang.String getShortName()
Deprecated.Deprecated. UsegetAlias()
-
getFullName
public java.lang.String getFullName()
-
getPackage
public java.lang.String getPackage()
-
getDisassembledCode
public java.lang.String getDisassembledCode()
-
getDisassembledCode
protected void getDisassembledCode(SimpleCodeWriter code)
-
getClsData
@Nullable public @Nullable jadx.api.plugins.input.data.IClassData getClsData()
Low level class data access.- Returns:
- null for classes generated by jadx
-
getState
public ProcessState getState()
-
setState
public void setState(ProcessState state)
-
getLoadStage
public LoadStage getLoadStage()
-
setLoadStage
public void setLoadStage(LoadStage loadStage)
-
reloadAtCodegenStage
public void reloadAtCodegenStage()
-
getDependencies
public java.util.List<ClassNode> getDependencies()
-
setDependencies
public void setDependencies(java.util.List<ClassNode> dependencies)
-
removeDependency
public void removeDependency(ClassNode dep)
-
getCodegenDeps
public java.util.List<ClassNode> getCodegenDeps()
-
setCodegenDeps
public void setCodegenDeps(java.util.List<ClassNode> codegenDeps)
-
addCodegenDep
public void addCodegenDep(ClassNode dep)
-
getTotalDepsCount
public int getTotalDepsCount()
-
getUseIn
public java.util.List<ClassNode> getUseIn()
- Specified by:
getUseInin interfaceIUsageInfoNode
-
setUseIn
public void setUseIn(java.util.List<ClassNode> useIn)
-
getUseInMth
public java.util.List<MethodNode> getUseInMth()
-
setUseInMth
public void setUseInMth(java.util.List<MethodNode> useInMth)
-
getInputFileName
public java.lang.String getInputFileName()
- Specified by:
getInputFileNamein interfaceIDexNode
-
getJavaNode
public JavaClass getJavaNode()
-
setJavaNode
public void setJavaNode(JavaClass javaNode)
-
getAnnType
public ICodeAnnotation.AnnType getAnnType()
- Specified by:
getAnnTypein interfaceICodeAnnotation
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
compareTo
public int compareTo(@NotNull @NotNull ClassNode o)- Specified by:
compareToin interfacejava.lang.Comparable<ClassNode>
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-