类 SimpleVerifier

所有已实现的接口:
Opcodes

public class SimpleVerifier extends BasicVerifier
An extended BasicVerifier that performs more precise verifications. This verifier computes exact class types, instead of using a single "object reference" type (as done in BasicVerifier).
作者:
Eric Bruneton, Bing Ran
  • 字段详细资料

    • currentClass

      private final Type currentClass
      The type of the class that is verified.
    • currentSuperClass

      private final Type currentSuperClass
      The type of the super class of the class that is verified.
    • currentClassInterfaces

      private final Type[] currentClassInterfaces
      The types of the interfaces directly implemented by the class that is verified.
    • isInterface

      private final boolean isInterface
      Whether the class that is verified is an interface.
    • loader

      private ClassLoader loader
      The loader to use to load the referenced classes.
  • 构造器详细资料

    • SimpleVerifier

      public SimpleVerifier()
      Constructs a new SimpleVerifier.
    • SimpleVerifier

      public SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface)
      Constructs a new SimpleVerifier to verify a specific class.
      参数:
      currentClass - the type of the class to be verified.
      currentSuperClass - the type of the super class of the class to be verified.
      isInterface - whether the class to be verifier is an interface.
    • SimpleVerifier

      public SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface, Type... currentClassInterfaces)
      Constructs a new SimpleVerifier to verify a specific class. This class will not be loaded into the JVM since it may be incorrect.
      参数:
      currentClass - the type of the class to be verified.
      currentSuperClass - the type of the super class of the class to be verified.
      currentClassInterfaces - the types of the interfaces directly implemented by the class to be verified.
      isInterface - whether the class to be verifier is an interface.
  • 方法详细资料

    • setClassLoader

      public void setClassLoader(ClassLoader loader)
      Sets the ClassLoader to be used in getClass(cn.taketoday.bytecode.Type).
      参数:
      loader - the ClassLoader to use.
    • newValue

      public BasicValue newValue(Type type)
      从类复制的说明: Interpreter
      Creates a new value that represents the given type.

      Called for method parameters (including this), exception handler variable and with null type for variables reserved by long and double types.

      An interpreter may choose to implement one or more of Interpreter.newReturnTypeValue(Type), Interpreter.newParameterValue(boolean, int, Type), Interpreter.newEmptyValue(int), Interpreter.newExceptionValue(TryCatchBlockNode, Frame, Type) to distinguish different types of new value.

      覆盖:
      newValue 在类中 BasicInterpreter
      参数:
      type - a primitive or reference type, or null to represent an uninitialized value.
      返回:
      a value that represents the given type. The size of the returned value must be equal to the size of the given type.
    • isArrayValue

      protected boolean isArrayValue(BasicValue value)
      从类复制的说明: BasicVerifier
      Returns whether the given value corresponds to an array reference.
      覆盖:
      isArrayValue 在类中 BasicVerifier
      参数:
      value - a value.
      返回:
      whether 'value' corresponds to an array reference.
    • getElementValue

      protected BasicValue getElementValue(BasicValue objectArrayValue)
      从类复制的说明: BasicVerifier
      Returns the value corresponding to the type of the elements of the given array reference value.
      覆盖:
      getElementValue 在类中 BasicVerifier
      参数:
      objectArrayValue - a value corresponding to array of object (or array) references.
      返回:
      the value corresponding to the type of the elements of 'objectArrayValue'.
    • isSubTypeOf

      protected boolean isSubTypeOf(BasicValue value, BasicValue expected)
      从类复制的说明: BasicVerifier
      Returns whether the type corresponding to the first argument is a subtype of the type corresponding to the second argument.
      覆盖:
      isSubTypeOf 在类中 BasicVerifier
      参数:
      value - a value.
      expected - another value.
      返回:
      whether the type corresponding to 'value' is a subtype of the type corresponding to 'expected'.
    • merge

      public BasicValue merge(BasicValue value1, BasicValue value2)
      从类复制的说明: Interpreter
      Merges two values. The merge operation must return a value that represents both values (for instance, if the two values are two types, the merged value must be a common super type of the two types. If the two values are integer intervals, the merged value must be an interval that contains the previous ones. Likewise for other types of values).
      覆盖:
      merge 在类中 BasicInterpreter
      参数:
      value1 - a value.
      value2 - another value.
      返回:
      the merged value. If the merged value is equal to value1, this method must return value1.
    • newArrayValue

      private BasicValue newArrayValue(Type type, int dimensions)
    • isInterface

      protected boolean isInterface(Type type)
      Returns whether the given type corresponds to the type of an interface. The default implementation of this method loads the class and uses the reflection API to return its result (unless the given type corresponds to the class being verified).
      参数:
      type - a type.
      返回:
      whether 'type' corresponds to an interface.
    • getSuperClass

      protected Type getSuperClass(Type type)
      Returns the type corresponding to the super class of the given type. The default implementation of this method loads the class and uses the reflection API to return its result (unless the given type corresponds to the class being verified).
      参数:
      type - a type.
      返回:
      the type corresponding to the super class of 'type'.
    • isAssignableFrom

      protected boolean isAssignableFrom(Type type1, Type type2)
      Returns whether the class corresponding to the first argument is either the same as, or is a superclass or superinterface of the class corresponding to the second argument. The default implementation of this method loads the classes and uses the reflection API to return its result (unless the result can be computed from the class being verified, and the types of its super classes and implemented interfaces).
      参数:
      type1 - a type.
      type2 - another type.
      返回:
      whether the class corresponding to 'type1' is either the same as, or is a superclass or superinterface of the class corresponding to 'type2'.
    • getClass

      protected Class<?> getClass(Type type)
      Loads the class corresponding to the given type. The class is loaded with the class loader specified with setClassLoader(java.lang.ClassLoader), or with the class loader of this class if no class loader was specified.
      参数:
      type - a type.
      返回:
      the class corresponding to 'type'.