Trait droid_wrap::java::lang::reflect::InvocationHandler

source ·
pub trait InvocationHandler: JObjRef + JObjNew + PartialEq + Debug {
    const CLASS: &'static str = "java/lang/InvocationHandler";
    const OBJECT_SIG: &'static str = "Ljava/lang/InvocationHandler;";

    // Required method
    fn invoke(proxy: &Object, method: &Method, args: &[Object]);
}
Expand description
  • InvocationHandler 是代理实例的调用处理程序实现的接口。每个代理实例都有一个关联的调用处理程序。当在代理实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法。

Provided Associated Constants§

source

const CLASS: &'static str = "java/lang/InvocationHandler"

java/lang/InvocationHandler

source

const OBJECT_SIG: &'static str = "Ljava/lang/InvocationHandler;"

Ljava/lang/InvocationHandler;

Required Methods§

source

fn invoke(proxy: &Object, method: &Method, args: &[Object])

  • 处理代理实例上的方法调用并返回结果。当在与其关联的代理实例上调用方法时,将在调用处理程序上调用此方法。
  • proxy 调用该方法的代理实例
  • method 与在代理实例上调用的接口方法相对应的 Method 实例。Method 对象的声明类将是声明该方法的接口,该接口可能是代理类通过其继承方法的代理接口的超接口。
  • args 包含代理实例上的方法调用中传递的参数值的对象数组,如果接口方法不带参数,则为 null。原始类型的参数包装在适当的原始包装器类的实例中,例如 java.lang.Integer 或 java.lang.Boolean。
  • 返回:从代理实例上的方法调用返回的值。如果接口方法声明的返回类型是原始类型,则此方法返回的值必须是相应原始包装器类的实例;否则,它必须是可分配给声明的返回类型的类型。如果此方法返回的值为 null,并且接口方法的返回类型为原始类型,则代理实例上的方法调用将抛出 NullPointerException。如果此方法返回的值与接口方法声明的返回类型不兼容(如上所述),则代理实例上的方法调用将抛出 ClassCastException。
  • 抛出:Throwable – 代理实例上的方法调用抛出的异常。异常的类型必须可分配给接口方法的 throws 子句中声明的任何异常类型,或可分配给未经检查的异常类型 java.lang.RuntimeException 或 java.lang.Error。如果此方法抛出的已检查异常无法分配给接口方法的 throws 子句中声明的任何异常类型,则代理实例上的方法调用将抛出包含此方法抛出的异常的 UndeclaredThrowableException。

Object Safety§

This trait is not object safe.

Implementors§