是否可以通过反射获取构造函数的钩子(Hook)/回调?
我的用例是将表达式用作函数。在像 Kotlin 这样的语言中, float 表达式完全可以与扩展运算符结合使用,在某些情况下它可以形成真正简单的语法。
这无法通过代码实现来完成,因为语法必须完全无样板。
最佳答案
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);
}
};
如果您需要动态应用扩展(在运行时),您可以尝试应用装饰器模式来组成各种回调。
关于Java:如何通过反射获取构造函数的钩子(Hook)/回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34851431/