相关疑难解决方法(0)

一个更基本的原因Java不包括运算符重载(至少对于赋值)?

关于Java中没有运算符重载这一事实的2年左右的讨论(为什么Java不提供运算符重载?),并且从很多C++年代开始到Java,我想知道是否还有更多运算符重载不是Java语言的一部分的根本原因,至少在赋值的情况下,而不是答案底部附近的最高级别答案(即James Gosling的个人选择).

具体来说,考虑分配.

// C++
#include <iostream>

class MyClass
{
public:
    int x;
    MyClass(const int _x) : x(_x) {}
    MyClass & operator=(const MyClass & rhs) {x=rhs.x; return *this;}
};

int main()
{
    MyClass myObj1(1), myObj2(2);
    MyClass & myRef = myObj1;
    myRef = myObj2;

    std::cout << "myObj1.x = " << myObj1.x << std::endl;
    std::cout << "myObj2.x = " << myObj2.x << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

myObj1.x = 2
myObj2.x = 2
Run Code Online (Sandbox Code Playgroud)

但是,在Java中,该行myRef = myObj2(假设myRef前一行中的声明是 …

c++ java operator-overloading

3
推荐指数
1
解决办法
772
查看次数

是否可以在Java中实现/覆盖+和++?

可能重复:
运算符重载和覆盖java

我想知道是否可以实现和覆盖+和++运算符.

例:

public class MyClass{
 private myIncrement =0; //with its getter and setter
}

.... (another class code)
MyClass myClass = new MyClass();
myClass++;
myClass.getIncrement(); //this will return 1.
Run Code Online (Sandbox Code Playgroud)

而且,如果我想创建一个Integer类,只给出三个中的三个,当我在MultipleOfThree实例上使用i ++时,它将三个加到当前实例而不是sum 1.

java

3
推荐指数
4
解决办法
276
查看次数

那么.... Java是否支持运算符重载?

我花了几个小时研究这个,我仍然很困惑.

我和许多其他人一样,在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); 
}
Run Code Online (Sandbox Code Playgroud)

并告诉我它确实是Java.我没有JS的经验无法分辨,他离开了(现在),但我尝试将它放入我的IDE(IntelliJ),并且我被编译器错误攻击了.我甚至不知道从哪里开始修理它们,但主要的是它cannot resolve symbol "operator".

我不是在寻找有关Java内置运算符重载的任何讨论,我正在寻找关于Java中的用户是否可以自己重载运算符的确定答案.

java operator-overloading

2
推荐指数
1
解决办法
3342
查看次数

Java,运算符重载和字符串的“+”运算符

我对 Java 中的运算符重载有疑问。我知道Java不支持运算符重载,但是“+”运算符在下面有效的Java程序中做什么:

import java.util.*;
import java.lang.*;
import java.io.*;

class OperatorOverloadingTest
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str1 = "Operator ";
        String str2 = "overloading";
        String str3 = str1+str2;

        System.out.println(str3);
    }
}

Stdout:
Operator overloading
Run Code Online (Sandbox Code Playgroud)

java string operator-overloading

2
推荐指数
1
解决办法
2041
查看次数

运算符重载 - 禁止是否合理?

Java禁止运算符重载,但是来自C++我没有看到任何理由.在运算符符号是任何其他符号的语言中,相同的规则适用于"+"和"加号",并且没有问题.那有什么意义呢?

编辑:更具体一点,告诉我哪个缺点超载"+"可能超载"等于".

oop programming-languages operator-overloading

1
推荐指数
1
解决办法
535
查看次数