Class ClassNode

    • 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)
      • checkProcessed

        public boolean checkProcessed()
      • ensureProcessed

        public void ensureProcessed()
      • 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: ILoadable
        On demand loading
        Specified by:
        load in interface ILoadable
      • unload

        public void unload()
        Description copied from interface: ILoadable
        Free resources
        Specified by:
        unload in interface ILoadable
      • 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)
      • searchFieldByNameAndType

        public FieldNode searchFieldByNameAndType​(FieldInfo field)
      • searchFieldByName

        public FieldNode searchFieldByName​(java.lang.String name)
      • searchFieldByShortId

        public FieldNode searchFieldByShortId​(java.lang.String shortId)
      • 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)
      • 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:
        rename in interface IRenameNode
      • removeAlias

        public void removeAlias()
      • 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()
      • typeName

        public java.lang.String typeName()
        Specified by:
        typeName in interface IDexNode
      • 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. Use getAlias()
      • 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
      • 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()
      • 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)
      • getJavaNode

        public JavaClass getJavaNode()
      • setJavaNode

        public void setJavaNode​(JavaClass javaNode)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • compareTo

        public int compareTo​(@NotNull
                             @NotNull ClassNode o)
        Specified by:
        compareTo in interface java.lang.Comparable<ClassNode>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object