org.robolectric.util.ReflectionHelpers.createDeepProxy()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(2.2k)|赞(0)|评价(0)|浏览(97)

本文整理了Java中org.robolectric.util.ReflectionHelpers.createDeepProxy方法的一些代码示例,展示了ReflectionHelpers.createDeepProxy的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ReflectionHelpers.createDeepProxy方法的具体详情如下:
包路径:org.robolectric.util.ReflectionHelpers
类名称:ReflectionHelpers
方法名:createDeepProxy

ReflectionHelpers.createDeepProxy介绍

[英]Create a proxy for the given class which returns other deep proxies from all it's methods.

The returned object will be an instance of the given class, but all methods will return either the "default" value for primitives, or another deep proxy for non-primitive types.

This should be used rarely, for cases where we need to create deep proxies in order not to crash. The inner proxies are impossible to configure, so there is no way to create meaningful behavior from a deep proxy. It serves mainly to prevent Null Pointer Exceptions.
[中]为给定类创建一个代理,该类从其所有方法返回其他深度代理。
返回的对象将是给定类的实例,但所有方法都将返回原语的“默认”值,或非原语类型的另一个深度代理。
在需要创建深度代理以避免崩溃的情况下,应该很少使用这种方法。内部代理无法配置,因此无法从深层代理创建有意义的行为。它主要用于防止空指针异常。

代码示例

代码示例来源:origin: robolectric/robolectric

@Override
 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  if (PRIMITIVE_RETURN_VALUES.containsKey(method.getReturnType().getName())) {
   return PRIMITIVE_RETURN_VALUES.get(method.getReturnType().getName());
  } else if (method.getReturnType().isInterface()) {
   return createDeepProxy(method.getReturnType());
  } else {
   return null;
  }
 }
});

代码示例来源:origin: robolectric/robolectric

private static Binder createDeepBinder(Class<? extends IInterface> clazz, String descriptor) {
 Binder binder = new Binder();
 binder.attachInterface(ReflectionHelpers.createDeepProxy(clazz), descriptor);
 return binder;
}

代码示例来源:origin: org.robolectric/shadowapi

@Override
 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  if (PRIMITIVE_RETURN_VALUES.containsKey(method.getReturnType().getName())) {
   return PRIMITIVE_RETURN_VALUES.get(method.getReturnType().getName());
  } else if (method.getReturnType() == Void.TYPE) {
   return null;
  } else {
   return createDeepProxy(method.getReturnType());
  }
 }
});

代码示例来源:origin: org.robolectric/shadows-framework

private static Binder createDeepBinder(Class<? extends IInterface> clazz, String descriptor) {
 Binder binder = new Binder();
 binder.attachInterface(ReflectionHelpers.createDeepProxy(clazz), descriptor);
 return binder;
}

相关文章