Пожалуйста, не могли бы вы сказать мне, возможно ли перегружать операторы в Java? Если это используется где-либо в Java, не могли бы вы рассказать мне об этом.
Переведено автоматически
Ответ 1
Нет, Java не поддерживает перегрузку определяемого пользователем оператора. Единственный аспект Java, который близок к "пользовательской" перегрузке операторов, - это обработка + для строк, что приводит либо к конкатенации констант во время компиляции, либо к конкатенации во время выполнения с использованием StringBuilder/StringBuffer. Однако вы не можете определить свои собственные операторы, которые действуют таким же образом.
Для Java-подобного (и основанного на JVM) языка, который действительно поддерживает перегрузку операторов, вы могли бы посмотреть на Kotlin или Groovy. В качестве альтернативы, вам может повезти с подключаемым модулем компилятора Java.
Ответ 2
Перегрузка оператора используется в Java для конкатенации строкового типа:
Stringconcat="one" + "two";
Однако вы не можете определить свои собственные перегрузки оператора.
Ответ 3
В дополнение ко всем людям, указывающим, что + перегружен для строк, - также перегружен как для операций с плавающей запятой, так и для целых чисел, как * и /.
[править] % также перегружен для работы с плавающей запятой, что может быть немного неожиданным для тех, у кого есть опыт работы с C или C ++.
Ответ 4
Java не допускает перегрузки оператора. Предпочтительный подход заключается в определении метода в вашем классе для выполнения действия: a.add(b) вместо a + b. Вы можете увидеть краткое описание других элементов Java, исключенных из C-подобных языков, здесь: Функции, удаленные из C и C ++