我花了几个小时研究这个,我仍然很困惑.
我和许多其他人一样,在Google上搜索了这个并发现了这个SO线程.
然而,最近,我的一个编程课程的学生告诉我这不是真的,事实上,教练验证了它.见鬼,整个班级都听到了,没有人质疑他.他从Java.net提供此链接作为证据.
我立刻对他说,"看起来像JavaScript,"但他指出这一部分:
class User { List roles; User() { roles = new List(); } operator +(Role newRole) { this.roles.add(newRole); } } main() { User alice = new User(); Role adminUser = new Role("TIMESHEET_ADMIN", 3); alice + adminUser; print(alice.roles.length); }
并告诉我它确实是Java.我没有JS的经验无法分辨,他离开了(现在),但我尝试将它放入我的IDE(IntelliJ),并且我被编译器错误攻击了.我甚至不知道从哪里开始修理它们,但主要的是它cannot resolve symbol "operator"
.
我不是在寻找有关Java内置运算符重载的任何讨论,我正在寻找关于Java中的用户是否可以自己重载运算符的确定答案.
确定的答案是否定的,Java不支持运算符重载,除了String类型.但更重要的是,对您的问题的更大答案是,您应该查看单个文档,Java语言规范或JLS,它将回答这个以及任何其他类似的关于Java包含或不包含的内容的问题.不要与任何人讨论maybes或ifs.去寻找自己,并为自己满足除了神奇的String类型之外没有Java的运算符重载这样的东西.它就在JLS中,这就是它的用途.