Class ClassModel

java.lang.Object
proguard.evaluation.value.object.model.ClassModel
All Implemented Interfaces:
Model, ReflectiveModel<ClassModel>

public class ClassModel extends Object implements ReflectiveModel<ClassModel>
A Model to track specific Clazz constants.
  • Constructor Details

    • ClassModel

      public ClassModel(@NotNull @NotNull Clazz clazz)
      Creates a new ClassModel for the given Clazz.
      Parameters:
      clazz - The class to model.
    • ClassModel

      public ClassModel(String name)
      Creates a new ClassModel for an unknown class.
      Parameters:
      name - The name of the class.
    • ClassModel

      public ClassModel(@NotNull @NotNull Class<?> clazz)
      Used for creating a ClassModel for any of the primitive classes.
      Parameters:
      clazz - one of the primitive classes. int.class,boolean.class, ...
      Throws:
      IllegalArgumentException - iff a non-primitive Class object is passed.
  • Method Details

    • getClazz

      @Nullable public @Nullable Clazz getClazz()
      Use this in case isPrimitive() is true. Otherwise, use getPrimitiveClass()
      Returns:
      the modeled Clazz.
      Throws:
      IllegalArgumentException - if a primitive class is modeled.
    • getPrimitiveClass

      public Class<?> getPrimitiveClass()
      Use this in case isPrimitive() is false. Otherwise, use getClazz().
      Returns:
      the modeled Class.
      Throws:
      IllegalArgumentException - if a non-primitive class is modeled.
    • isPrimitive

      public boolean isPrimitive()
    • isUnknown

      public boolean isUnknown()
    • getModeledClassName

      @Nullable public @Nullable String getModeledClassName()
      Returns:
      the name of the modeled class.
    • getType

      @NotNull public @NotNull String getType()
      Description copied from interface: Model
      Returns the type of the modeled class.
      Specified by:
      getType in interface Model
    • init

      public MethodResult init(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
      Description copied from interface: Model
      Execute a constructor call for the modeled class.

      It is suggested to add logic to allow running this only on a dummy model without any state.

      Specified by:
      init in interface Model
      Specified by:
      init in interface ReflectiveModel<ClassModel>
      Parameters:
      methodExecutionInfo - execution info of the target method.
      valueCalculator - the value calculator that should be used to create any value in the result.
      Returns:
      the result of the method invocation. Since it's a constructor invocation the return value of the result is expected to be empty and the constructed value should be set as the updated instance.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object