我试图创建一个无符号整数类.
public class UnsignedInteger extends Number implements Comparable<UnsignedInteger>
{
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现运营商,如; +, - ,*,/,<<,>>,|,^,>>>,<<
Roh*_*ain 18
Java不支持运算符重载.你唯一的选择是这样定义的方法add()
,subtract()
,multiply()
,等,并写出逻辑存在,并调用它们的特定操作.
您可以查看BigInteger类,了解如何定义支持各种操作的方法.如果有兴趣,您甚至可以浏览源代码,您可以在jdk主目录的src文件夹中找到它.
已经有5个答案说你不能重载运算符,但我想指出你根本不能在对象上使用算术运算符.他们只用原始类型(工作int
,double
等等).
以下代码编译的唯一原因
Integer a = 1, b = 2;
Integer c = a + b;
Run Code Online (Sandbox Code Playgroud)
是因为Java编译器将其编译为
Integer a = Integer.valueOf(1), b = Integer.valueOf(2);
Integer c = Integer.valueOf(a.intValue() + b.intValue());
Run Code Online (Sandbox Code Playgroud)
如果你想让它适合你UnsignedInteger
,你必须扩展javac(尽管如此).