我正在尝试使用字节好友创建代理对象。实际上,我想模拟任何类中的任何依赖项,如果对该删除对象调用任何方法,它将返回到呼叫者的每一确定值。
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
}
}
只需将此对象提供给构造函数。