public class ClassNode extends NotificationAttrNode implements ILoadable, ICodeNode, java.lang.Comparable<ClassNode>
ICodeAnnotation.AnnType| Constructor and Description |
|---|
ClassNode(RootNode root,
jadx.api.plugins.input.data.IClassData cls) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCodegenDep(ClassNode dep) |
void |
addField(FieldNode fld) |
void |
addInlinedClass(ClassNode cls) |
void |
addInnerClass(ClassNode cls) |
static ClassNode |
addSyntheticClass(RootNode root,
ClassInfo clsInfo,
int accessFlags) |
static ClassNode |
addSyntheticClass(RootNode root,
java.lang.String name,
int accessFlags) |
boolean |
checkProcessed() |
int |
compareTo(@NotNull ClassNode o) |
ICodeInfo |
decompile() |
ICodeInfo |
decompileWithMode(DecompilationMode mode)
WARNING: Slow operation! Use with caution!
|
void |
deepUnload() |
void |
ensureProcessed() |
boolean |
equals(java.lang.Object o) |
AccessInfo |
getAccessFlags() |
ICodeAnnotation.AnnType |
getAnnType() |
ClassInfo |
getClassInfo()
Internal class info (don't use in code generation and external api).
|
@Nullable MethodNode |
getClassInitMth() |
jadx.api.plugins.input.data.IClassData |
getClsData() |
ICodeInfo |
getCode() |
@Nullable ICodeInfo |
getCodeFromCache() |
java.util.List<ClassNode> |
getCodegenDeps() |
FieldNode |
getConstField(java.lang.Object obj) |
@Nullable FieldNode |
getConstField(java.lang.Object obj,
boolean searchGlobal) |
@Nullable FieldNode |
getConstFieldByLiteralArg(LiteralArg arg) |
@Nullable MethodNode |
getDefaultConstructor() |
java.util.List<ClassNode> |
getDependencies() |
java.lang.String |
getDisassembledCode() |
protected void |
getDisassembledCode(java.lang.StringBuilder sb) |
java.util.List<FieldNode> |
getFields() |
java.lang.String |
getFullName() |
java.util.List<ArgType> |
getGenericTypeParameters() |
java.util.List<ClassNode> |
getInlinedClasses() |
void |
getInnerAndInlinedClassesRecursive(java.util.Set<ClassNode> resultClassesSet)
Get all inner and inlined classes recursively
|
java.util.List<ClassNode> |
getInnerClasses() |
java.lang.String |
getInputFileName() |
java.util.List<ArgType> |
getInterfaces() |
LoadStage |
getLoadStage() |
java.util.List<MethodNode> |
getMethods() |
java.lang.String |
getPackage() |
ClassNode |
getParentClass() |
java.lang.String |
getRawName() |
java.lang.String |
getShortName() |
ProcessState |
getState() |
@Nullable ArgType |
getSuperClass() |
ClassNode |
getTopParentClass() |
int |
getTotalDepsCount() |
ArgType |
getType() |
java.util.List<ClassNode> |
getUseIn() |
java.util.List<MethodNode> |
getUseInMth() |
int |
hashCode() |
boolean |
hasNotGeneratedParent() |
boolean |
isAnonymous() |
boolean |
isEnum() |
boolean |
isInner() |
boolean |
isSynthetic() |
boolean |
isTopClass() |
void |
load()
On demand loading
|
void |
reloadAtCodegenStage() |
ICodeInfo |
reloadCode() |
void |
removeDependency(ClassNode dep) |
RootNode |
root() |
FieldNode |
searchField(FieldInfo field) |
FieldNode |
searchFieldByName(java.lang.String name) |
FieldNode |
searchFieldByNameAndType(FieldInfo field) |
FieldNode |
searchFieldByShortId(java.lang.String shortId) |
MethodNode |
searchMethod(MethodInfo mth) |
MethodNode |
searchMethodByShortId(java.lang.String shortId) |
@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)
|
void |
setAccessFlags(AccessInfo accessFlags) |
void |
setCodegenDeps(java.util.List<ClassNode> codegenDeps) |
void |
setDependencies(java.util.List<ClassNode> dependencies) |
void |
setLoadStage(LoadStage loadStage) |
void |
setState(ProcessState state) |
void |
setUseIn(java.util.List<ClassNode> useIn) |
void |
setUseInMth(java.util.List<MethodNode> useInMth) |
java.lang.String |
toString() |
java.lang.String |
typeName() |
void |
unload()
Free resources
|
void |
unloadCode() |
void |
updateGenericClsData(ArgType superClass,
java.util.List<ArgType> interfaces,
java.util.List<ArgType> generics) |
void |
updateParentClass() |
void |
visitParentClasses(java.util.function.Consumer<ClassNode> consumer) |
void |
visitSuperTypes(java.util.function.BiConsumer<ArgType,ArgType> consumer) |
addDebugComment, addError, addInfoComment, addWarn, addWarnComment, addWarnComment, checkCommentsLevel, getCommentsLeveladdSourceLineFrom, copyLines, getDefPosition, getSourceLine, setDefPosition, setSourceLineadd, addAttr, addAttr, addAttr, addAttrs, clearAttributes, contains, contains, copyAttributeFrom, copyAttributesFrom, get, getAll, getAnnotation, getAttributesString, getAttributesStringsList, isAttrStorageEmpty, remove, remove, removeAttr, rewriteAttributeFrom, unloadAttributesclone, finalize, getClass, notify, notifyAll, wait, wait, waitadd, addAttr, addAttr, addAttrs, clearAttributes, contains, contains, copyAttributeFrom, copyAttributesFrom, get, getAll, getAnnotation, getAttributesString, getAttributesStringsList, isAttrStorageEmpty, remove, remove, removeAttr, rewriteAttributeFromgetDefPosition, setDefPositionpublic ClassNode(RootNode root, jadx.api.plugins.input.data.IClassData cls)
public void updateGenericClsData(ArgType superClass, java.util.List<ArgType> interfaces, java.util.List<ArgType> generics)
public static ClassNode addSyntheticClass(RootNode root, java.lang.String name, int accessFlags)
public static ClassNode addSyntheticClass(RootNode root, ClassInfo clsInfo, int accessFlags)
public boolean checkProcessed()
public void ensureProcessed()
public ICodeInfo decompile()
public ICodeInfo decompileWithMode(DecompilationMode mode)
public ICodeInfo getCode()
public ICodeInfo reloadCode()
public void unloadCode()
public void deepUnload()
@Nullable public @Nullable ICodeInfo getCodeFromCache()
public void load()
ILoadablepublic void unload()
ILoadable@Nullable public @Nullable ArgType getSuperClass()
public java.util.List<ArgType> getInterfaces()
public java.util.List<ArgType> getGenericTypeParameters()
public ArgType getType()
public java.util.List<MethodNode> getMethods()
public java.util.List<FieldNode> getFields()
public void addField(FieldNode fld)
public FieldNode getConstField(java.lang.Object obj)
@Nullable public @Nullable FieldNode getConstField(java.lang.Object obj, boolean searchGlobal)
@Nullable public @Nullable FieldNode getConstFieldByLiteralArg(LiteralArg arg)
public FieldNode searchFieldByName(java.lang.String name)
public FieldNode searchFieldByShortId(java.lang.String shortId)
public MethodNode searchMethod(MethodInfo mth)
public MethodNode searchMethodByShortId(java.lang.String shortId)
@Nullable public @Nullable MethodNode searchMethodByShortName(java.lang.String name)
public ClassNode getParentClass()
public void updateParentClass()
public ClassNode getTopParentClass()
public void visitParentClasses(java.util.function.Consumer<ClassNode> consumer)
public void visitSuperTypes(java.util.function.BiConsumer<ArgType,ArgType> consumer)
public boolean hasNotGeneratedParent()
public java.util.List<ClassNode> getInnerClasses()
public java.util.List<ClassNode> getInlinedClasses()
public void getInnerAndInlinedClassesRecursive(java.util.Set<ClassNode> resultClassesSet)
resultClassesSet - all identified inner and inlined classes are added to this setpublic void addInnerClass(ClassNode cls)
public void addInlinedClass(ClassNode cls)
public boolean isEnum()
public boolean isAnonymous()
public boolean isSynthetic()
public boolean isInner()
public boolean isTopClass()
@Nullable public @Nullable MethodNode getClassInitMth()
@Nullable public @Nullable MethodNode getDefaultConstructor()
public AccessInfo getAccessFlags()
getAccessFlags in interface ICodeNodepublic void setAccessFlags(AccessInfo accessFlags)
setAccessFlags in interface ICodeNodepublic java.lang.String getRawName()
public ClassInfo getClassInfo()
public java.lang.String getShortName()
public java.lang.String getFullName()
public java.lang.String getPackage()
public java.lang.String getDisassembledCode()
protected void getDisassembledCode(java.lang.StringBuilder sb)
public jadx.api.plugins.input.data.IClassData getClsData()
public ProcessState getState()
public void setState(ProcessState state)
public LoadStage getLoadStage()
public void setLoadStage(LoadStage loadStage)
public void reloadAtCodegenStage()
public java.util.List<ClassNode> getDependencies()
public void setDependencies(java.util.List<ClassNode> dependencies)
public void removeDependency(ClassNode dep)
public java.util.List<ClassNode> getCodegenDeps()
public void setCodegenDeps(java.util.List<ClassNode> codegenDeps)
public void addCodegenDep(ClassNode dep)
public int getTotalDepsCount()
public java.util.List<ClassNode> getUseIn()
getUseIn in interface IUsageInfoNodepublic void setUseIn(java.util.List<ClassNode> useIn)
public java.util.List<MethodNode> getUseInMth()
public void setUseInMth(java.util.List<MethodNode> useInMth)
public java.lang.String getInputFileName()
getInputFileName in interface IDexNodepublic ICodeAnnotation.AnnType getAnnType()
getAnnType in interface ICodeAnnotationpublic int hashCode()
hashCode in class java.lang.Objectpublic boolean equals(java.lang.Object o)
equals in class java.lang.Objectpublic int compareTo(@NotNull
@NotNull ClassNode o)
compareTo in interface java.lang.Comparable<ClassNode>public java.lang.String toString()
toString in class java.lang.Object