我试图创建一个无符号整数类。
public class UnsignedInteger extends Number implements Comparable<UnsignedInteger>
{
...
}
有没有一种方法来实现如下运算符:+、-、*、/、<<、>>、|、^、>>>以及<<?
Java 不支持运算符重载。唯一的选择是像 add()
、subtract()
、multiply()
等方法一样定义方法,写出逻辑,并为特定操作调用它们。
你可以查看BigInteger类,以了解如何定义方法来支持各种操作。如果有兴趣,甚至可以阅读源代码,在你的jdk主目录的src文件夹中找到它们。
已经有5个答案说你不能重载运算符,但是我想指出的是,你根本不能在对象上使用算术运算符。它们只适用于原始类型(int
、double
等)。
以下代码之所以能编译:
Integer a = 1, b = 2;
Integer c = a + b;
这是因为Java编译器将其编译为
Integer a = Integer.valueOf(1), b = Integer.valueOf(2);
Integer c = Integer.valueOf(a.intValue() + b.intValue());
UnsignedInteger
,您需要扩展 javac(尽管这是可能的)。Java不支持运算符重载,他们认为这是一种不好的实践方式,虽然他们对String
类重载了+
和+=
操作符。
StringBuilder#append()
调用。 - Cephalopod
C#
支持~ ;) - Eng.Fouad