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

时间:2016-01-18 09:38:10

标签: java reflection constructor callback hook

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

我的用例是将表达式用作函数。在像Kotlin这样的语言中,浮动表达式完全可以与扩展运算符结合使用,在某些情况下它可以构成一个真正无关紧要的语法。

这不能通过代码实现来完成,因为语法必须完全没有样板。

1 个答案:

答案 0 :(得分:-1)

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模式来编写各种回调。

相关问题