因此,Java支持操作员会超载



我已经花了几个小时研究了这一点,但我仍然很困惑。

i,与许多其他人一样,在Google上搜索了此信息,并找到了此线程。

最近,我的一个编程课程中的一名学生告诉我,这不是事实,实际上,教练对此进行了验证。地狱,整个班级都听到了,没有人争夺他。他从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); 
}

告诉我确实是爪哇。我在JS没有经验无法分辨的经验,他现在就逃脱了,但是我尝试将其放入我的IDE(Intellij)中,而我遭到编译器错误的袭击。我什至不知道从哪里修复它们,但主要的是cannot resolve symbol "operator"

我不是在这里寻找有关Java内置运算符超载的任何讨论,我正在寻找有关Java用户是否可以自行超载运算符的确定答案。

确定的答案是否,除了字符串类型外,Java不支持操作员超载。但更重要的是,对您的问题的更大答案是,您应该查看一个文档,Java语言规范或JLS,这些文档将回答此问题以及有关Java所包含的内容或其他类似的问题。不要与任何人辩论有关Maybes或Ifs的辩论。去寻找自己,并为自己满意,除了神奇的字符串类型外,没有操作员过载的东西。这就是JLS中的全部,这就是它的目的。

最新更新