Class InheritanceData


  • public class InheritanceData
    extends Object
    Used to track which methods are implemented by a base class, which is often needed when transforming a subclass.
    • Method Detail

      • isTransformed

        public boolean isTransformed()
        Is this bundle for a transformed class, or for a base class (typically Object)?
        Returns:
        true if this bundle is for transformed class, false otherwise
      • createChild

        public InheritanceData createChild​(String packageName)
        Returns a new MethodBundle that represents the methods of a child class of this bundle. The returned bundle will always be transformed.
        Parameters:
        packageName - the package that the child class will be created in
        Returns:
        new method bundle
      • addMethod

        public void addMethod​(String name,
                              String desc,
                              boolean samePackageOnly)
        Adds a new instance method. Only non-private methods should be added (that is, methods which might be overridden in subclasses). This can later be queried to see if any base class implements the method.
        Parameters:
        name - name of method
        desc - describes the parameters and return value of the method
        samePackageOnly - whether the method can only be overridden in classes that are in the same package
      • isImplemented

        public boolean isImplemented​(String name,
                                     String desc)
        Returns true if this class or a transformed parent class contains an implementation of, or abstract placeholder for, the method.
        Parameters:
        name - method name
        desc - method descriptor
        Returns:
        true if this class or a base class implements the method (including abstract methods)
      • isOverride

        public boolean isOverride​(String name,
                                  String desc)
        Returns true if the method is an override of a base class method
        Parameters:
        name - method name
        desc - method descriptor
        Returns:
        true if a base class implements the method (including abstract methods)
      • isInterfaceImplemented

        public boolean isInterfaceImplemented​(String name)
        Returns true if the class represented by this data, or any parent data, implements the named interface.
      • methodNames

        public Set<StringmethodNames()
        Returns the names of any methods in this bundle, or from any parent bundles.