Annotation Type Morph


@Documented @Retention(RUNTIME) @Target(PARAMETER) public @interface Morph
This annotation instructs Byte Buddy to inject a proxy class that calls a method's super method with explicit arguments. For this, the Morph.Binder needs to be installed for an interface type that takes an argument of the array type Object and returns a non-array type of Object. This is an alternative to using the SuperCall or DefaultCall annotations which call a super method using the same arguments as the intercepted method was invoked with.
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    A binder for the Morph annotation.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    Determines if the proxy should attempt to invoke a default method.
    The type on which a default method should be invoked.
    boolean
    Determines if the injected proxy for this parameter should be serializable.
  • Element Details

    • serializableProxy

      boolean serializableProxy
      Determines if the injected proxy for this parameter should be serializable.
      Returns:
      true if the proxy should be serializable.
      Default:
      false
    • defaultMethod

      boolean defaultMethod
      Determines if the proxy should attempt to invoke a default method. If the default method is ambiguous, use the defaultTarget() property instead which allows to determine an explicit interface on which the default method should be invoked on. If this other method is used, this property is ignored.
      Returns:
      true if a default method should be ignored.
      Default:
      false
    • defaultTarget

      Class<?> defaultTarget
      The type on which a default method should be invoked. When this property is not set and the defaultMethod() property is set to false, a normal super method invocation is attempted.
      Returns:
      The target interface of a default method call.
      Default:
      void.class