Java:如何通过反射获得构造函数的钩子/回调?

Java:如何通过反射获得构造函数的钩子/回调?,java,reflection,constructor,callback,hook,Java,Reflection,Constructor,Callback,Hook,是否可以通过反射获得构造函数的钩子/回调 我的用例是使用表达式作为函数。在像Kotlin这样的语言中,浮点表达式与扩展运算符结合在一起是完全可以的,在某些情况下,它可以产生真正简单的语法 这不能通过代码实现实现,因为语法必须完全不依赖于样板文件。Java不支持运算符重载 我可能有点误解,但从主题的名称来看,我认为您正在寻找的可能是通过这样的方式实现的 public abstract class CustomString { protected String wrappedString;

是否可以通过反射获得构造函数的钩子/回调

我的用例是使用表达式作为函数。在像Kotlin这样的语言中,浮点表达式与扩展运算符结合在一起是完全可以的,在某些情况下,它可以产生真正简单的语法


这不能通过代码实现实现,因为语法必须完全不依赖于样板文件。

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
本身上实现这一点。