Class ImmutableClassDef

All Implemented Interfaces:
CharSequence, Comparable<CharSequence>, Annotatable, ClassDef, Reference, TypeReference

public class ImmutableClassDef extends BaseTypeReference implements ClassDef
  • Field Details

    • type

      @Nonnull protected final String type
    • accessFlags

      protected final int accessFlags
    • superclass

      @Nullable protected final String superclass
    • interfaces

      @Nonnull protected final com.google.common.collect.ImmutableList<String> interfaces
    • sourceFile

      @Nullable protected final String sourceFile
    • annotations

      @Nonnull protected final com.google.common.collect.ImmutableSet<? extends ImmutableAnnotation> annotations
    • staticFields

      @Nonnull protected final com.google.common.collect.ImmutableSortedSet<? extends ImmutableField> staticFields
    • instanceFields

      @Nonnull protected final com.google.common.collect.ImmutableSortedSet<? extends ImmutableField> instanceFields
    • directMethods

      @Nonnull protected final com.google.common.collect.ImmutableSortedSet<? extends ImmutableMethod> directMethods
    • virtualMethods

      @Nonnull protected final com.google.common.collect.ImmutableSortedSet<? extends ImmutableMethod> virtualMethods
    • CONVERTER

      private static final ImmutableConverter<ImmutableClassDef,ClassDef> CONVERTER
  • Constructor Details

    • ImmutableClassDef

      public ImmutableClassDef(@Nonnull String type, int accessFlags, @Nullable String superclass, @Nullable Collection<String> interfaces, @Nullable String sourceFile, @Nullable Collection<? extends Annotation> annotations, @Nullable Iterable<? extends Field> fields, @Nullable Iterable<? extends Method> methods)
    • ImmutableClassDef

      public ImmutableClassDef(@Nonnull String type, int accessFlags, @Nullable String superclass, @Nullable Collection<String> interfaces, @Nullable String sourceFile, @Nullable Collection<? extends Annotation> annotations, @Nullable Iterable<? extends Field> staticFields, @Nullable Iterable<? extends Field> instanceFields, @Nullable Iterable<? extends Method> directMethods, @Nullable Iterable<? extends Method> virtualMethods)
    • ImmutableClassDef

      public ImmutableClassDef(@Nonnull String type, int accessFlags, @Nullable String superclass, @Nullable com.google.common.collect.ImmutableList<String> interfaces, @Nullable String sourceFile, @Nullable com.google.common.collect.ImmutableSet<? extends ImmutableAnnotation> annotations, @Nullable com.google.common.collect.ImmutableSortedSet<? extends ImmutableField> staticFields, @Nullable com.google.common.collect.ImmutableSortedSet<? extends ImmutableField> instanceFields, @Nullable com.google.common.collect.ImmutableSortedSet<? extends ImmutableMethod> directMethods, @Nullable com.google.common.collect.ImmutableSortedSet<? extends ImmutableMethod> virtualMethods)
  • Method Details

    • of

      public static ImmutableClassDef of(ClassDef classDef)
    • getType

      @Nonnull public String getType()
      Description copied from interface: ClassDef
      Gets the class type. This will be a type descriptor per the dex file specification.
      Specified by:
      getType in interface ClassDef
      Specified by:
      getType in interface TypeReference
      Returns:
      The class type
    • getAccessFlags

      public int getAccessFlags()
      Description copied from interface: ClassDef
      Gets the access flags for this class. This will be a combination of the AccessFlags.* flags that are marked as compatible for use with a class.
      Specified by:
      getAccessFlags in interface ClassDef
      Returns:
      The access flags for this class
    • getSuperclass

      @Nullable public String getSuperclass()
      Description copied from interface: ClassDef
      Gets the superclass of this class. This will only be null if this is the base java.lang.Object class.
      Specified by:
      getSuperclass in interface ClassDef
      Returns:
      The superclass of this class
    • getInterfaces

      @Nonnull public com.google.common.collect.ImmutableList<String> getInterfaces()
      Description copied from interface: ClassDef
      Gets a list of the interfaces that this class implements.
      Specified by:
      getInterfaces in interface ClassDef
      Returns:
      A list of the interfaces that this class implements
    • getSourceFile

      @Nullable public String getSourceFile()
      Description copied from interface: ClassDef
      Gets the name of the primary source file that this class is defined in, if available. This will be the default source file associated with all methods defined in this class. This can be overridden for sections of an individual method with the SetSourceFile debug item.
      Specified by:
      getSourceFile in interface ClassDef
      Returns:
      The name of the primary source file for this class, or null if not available
    • getAnnotations

      @Nonnull public com.google.common.collect.ImmutableSet<? extends ImmutableAnnotation> getAnnotations()
      Description copied from interface: ClassDef
      Gets a set of the annotations that are applied to this class. The annotations in the returned set are guaranteed to have unique types.
      Specified by:
      getAnnotations in interface Annotatable
      Specified by:
      getAnnotations in interface ClassDef
      Returns:
      A set of the annotations that are applied to this class
    • getStaticFields

      @Nonnull public com.google.common.collect.ImmutableSet<? extends ImmutableField> getStaticFields()
      Description copied from interface: ClassDef
      Gets the static fields that are defined by this class. The static fields that are returned must have no duplicates.
      Specified by:
      getStaticFields in interface ClassDef
      Returns:
      The static fields that are defined by this class
    • getInstanceFields

      @Nonnull public com.google.common.collect.ImmutableSet<? extends ImmutableField> getInstanceFields()
      Description copied from interface: ClassDef
      Gets the instance fields that are defined by this class. The instance fields that are returned must have no duplicates.
      Specified by:
      getInstanceFields in interface ClassDef
      Returns:
      The instance fields that are defined by this class
    • getDirectMethods

      @Nonnull public com.google.common.collect.ImmutableSet<? extends ImmutableMethod> getDirectMethods()
      Description copied from interface: ClassDef
      Gets the direct methods that are defined by this class. The direct methods that are returned must have no duplicates.
      Specified by:
      getDirectMethods in interface ClassDef
      Returns:
      The direct methods that are defined by this class.
    • getVirtualMethods

      @Nonnull public com.google.common.collect.ImmutableSet<? extends ImmutableMethod> getVirtualMethods()
      Description copied from interface: ClassDef
      Gets the virtual methods that are defined by this class. The virtual methods that are returned must have no duplicates.
      Specified by:
      getVirtualMethods in interface ClassDef
      Returns:
      The virtual methods that are defined by this class.
    • getFields

      @Nonnull public Collection<? extends ImmutableField> getFields()
      Description copied from interface: ClassDef
      Gets all the fields that are defined by this class. This is a convenience method that combines getStaticFields() and getInstanceFields() The returned fields may be in any order. I.e. It's not safe to assume that all instance fields will come after all static fields. Note that there typically should not be any duplicate fields between the two, but some versions of dalvik inadvertently allow duplicate static/instance fields, and are supported here for completeness
      Specified by:
      getFields in interface ClassDef
      Returns:
      A set of the fields that are defined by this class
    • getMethods

      @Nonnull public Collection<? extends ImmutableMethod> getMethods()
      Description copied from interface: ClassDef
      Gets all the methods that are defined by this class. This is a convenience method that combines getDirectMethods() and getVirtualMethods(). The returned methods may be in any order. I.e. It's not safe to assume that all virtual methods will come after all direct methods. Note that there typically should not be any duplicate methods between the two, but some versions of dalvik inadvertently allow duplicate direct/virtual methods, and are supported here for completeness
      Specified by:
      getMethods in interface ClassDef
      Returns:
      An iterable of the methods that are defined by this class.
    • immutableSetOf

      @Nonnull public static com.google.common.collect.ImmutableSet<ImmutableClassDef> immutableSetOf(@Nullable Iterable<? extends ClassDef> iterable)