Java:如何通过反射获得构造函数的钩子/回调?
是否可以通过反射获得构造函数的钩子/回调 我的用例是使用表达式作为函数。在像Kotlin这样的语言中,浮点表达式与扩展运算符结合在一起是完全可以的,在某些情况下,它可以产生真正简单的语法Java:如何通过反射获得构造函数的钩子/回调?,java,reflection,constructor,callback,hook,Java,Reflection,Constructor,Callback,Hook,是否可以通过反射获得构造函数的钩子/回调 我的用例是使用表达式作为函数。在像Kotlin这样的语言中,浮点表达式与扩展运算符结合在一起是完全可以的,在某些情况下,它可以产生真正简单的语法 这不能通过代码实现实现,因为语法必须完全不依赖于样板文件。Java不支持运算符重载 我可能有点误解,但从主题的名称来看,我认为您正在寻找的可能是通过这样的方式实现的 public abstract class CustomString { protected String wrappedString;
这不能通过代码实现实现,因为语法必须完全不依赖于样板文件。Java不支持运算符重载 我可能有点误解,但从主题的名称来看,我认为您正在寻找的可能是通过这样的方式实现的
public abstract class CustomString {
protected String wrappedString;
public CustomString(String string){
wrappedString = new String(string);
callback();
}
abstract void callback();
public String toString(){
return wrappedString;
}
abstract void callback();
}
然后扩展它以添加想要的行为
public class CustomStringWithCallback extends CustomString{
public CustomStringWithCallback(String string) {
super(string);
}
@Override
void callback() {
System.out.println(wrappedString);
}
}
或者简单地使用匿名调用:
new CustomString("some string") {
@Override
void callback() {
System.out.println(wrappedString);
}
};
如果您需要动态地(在运行时)应用扩展,您可以尝试应用Decorator模式来组合各种回调 你能举个例子吗?@SimoneZandara本质上这可以用于对象构造后的函数调用,允许构造函数“运算符重载”。一个非常好的例子是将
字符串的构造函数挂起打印到系统。out
,例如“Hello world!”
实际上会打印Hello world代码>到控制台。一个更重要的用例是能够在没有代理的情况下监视对象构造。Java不“支持”运算符重载,但可能通过挂接某些函数来模拟这种情况。我正在寻找一种基于反射的黑客在String
本身上实现这一点。