我见过一些不错的Java编译器hacks,其中你可以用抛出异常语句替换断言,你可以为字段自动生成属性等等...
我只是想知道...
是否有可能破解 Java 编译器以支持运算符重载?
编辑:
这并不是说我缺少 Java 中的运算符重载之类的东西。我只是想知道是否可以使用上面给出的链接中提到的技巧来实现它。所以请不要建议我切换到其他语言,比如 Scala(我已经在学习了!:D)。
编辑:
请告诉我是否可以使用 JSR 269 或类似的东西来做到这一点。 :|
通过一些技巧,可以使用 JSR 269 来实现 Java 运算符重载。查看 javac 和 Eclipse JDT 的 java-oo 插件:
JFront是Java语言的预处理器,允许您为自己的类实现运算符重载。遗憾的是,它似乎没有将这种能力添加到标准类中(BigInteger 等人将是一个很好的候选者)。
您可以使用字节代码注入将 float 等类型替换为您自己的类型。 这可以在编译后完成,无需更改编译器。
如果您想要运算符重载,您可以考虑转向Scala。 Scala 代码可与 Java 类互操作并支持运算符重载。
另一种方法是使用 Groovy 库,因为 Groovy 已经具有运算符重载。
当前的实现使用Groovy 对于超载。这种方法有 缺点之一:groovy 库 必须与项目一起交付。
它不允许运算符重载,但考虑到您问题中的链接,您可能会对 http://projectlombok.org/features/index.html
感兴趣