Вопрос-ответ

Operator overloading in Java

Перегрузка оператора в Java

Пожалуйста, не могли бы вы сказать мне, возможно ли перегружать операторы в Java? Если это используется где-либо в Java, не могли бы вы рассказать мне об этом.

Переведено автоматически
Ответ 1

Нет, Java не поддерживает перегрузку определяемого пользователем оператора. Единственный аспект Java, который близок к "пользовательской" перегрузке операторов, - это обработка + для строк, что приводит либо к конкатенации констант во время компиляции, либо к конкатенации во время выполнения с использованием StringBuilder/StringBuffer. Однако вы не можете определить свои собственные операторы, которые действуют таким же образом.

Для Java-подобного (и основанного на JVM) языка, который действительно поддерживает перегрузку операторов, вы могли бы посмотреть на Kotlin или Groovy. В качестве альтернативы, вам может повезти с подключаемым модулем компилятора Java.

Ответ 2

Перегрузка оператора используется в Java для конкатенации строкового типа:

String concat = "one" + "two";

Однако вы не можете определить свои собственные перегрузки оператора.

Ответ 3

В дополнение ко всем людям, указывающим, что + перегружен для строк, - также перегружен как для операций с плавающей запятой, так и для целых чисел, как * и /.

[править] % также перегружен для работы с плавающей запятой, что может быть немного неожиданным для тех, у кого есть опыт работы с C или C ++.

Ответ 4

Java не допускает перегрузки оператора. Предпочтительный подход заключается в определении метода в вашем классе для выполнения действия: a.add(b) вместо a + b. Вы можете увидеть краткое описание других элементов Java, исключенных из C-подобных языков, здесь: Функции, удаленные из C и C ++

java