使用字节好友创建一个代理对象



我正在尝试使用字节好友创建代理对象。实际上,我想模拟任何类中的任何依赖项,如果对该删除对象调用任何方法,它将返回到呼叫者的每一确定值。

public class Person{
 private String name;
 private Address address;
 public Person(String name, Address address){
     this.name = name;
     this.address = address;
 }
 public String getAddress(){
  return (address == null) "" : address.getStreet();
 }
}

=================================================================================

public class Address {
  private String street;
  public String getStreet() { return street; }

在上面的示例中,我想在同类中和每当perse.getAddress()方法中嘲笑地址。我想根据返回类型动态返回值。我是Byte Buddy的新手。我能够创建一个子类,但不确定如何动态返回该方法的类型并返回我的人均值。

您是否有机会注入提供给构造函数的值?在这种情况下,您只需为Address创建一个子类:

Address address = new ByteBuddy()
  .subclass(Address.class)
  .method(any()).intercept(MethodDelegation.to(MyInterceptor.class))
  .make()
  .load(Address.class.getClassLoader())
  .getLoaded()
  .newInstance();

与以下委托类似:

public class MyInterceptor {
  @RuntimeType
  public static Object intercept(@Origin Method method) {
    // create some return value or null for void
  }
}

只需将此对象提供给构造函数。

相关内容

最新更新