Оператор, перегружающийся в Java

Как отметил Дьякобсон, ответом является квалифицированное «да». По большей части, разработчикам Java не нужно беспокоиться о зависимостях платформы. Однако вы можете столкнуться с проблемами, когда имеете дело с API, которые обрабатывают традиционные функции ОС и платформы.

Например, при работе с файловым вводом-выводом легко сделать вашу платформу кода зависимой, игнорируя различия между разделителями файлов и путей на разных платформах (т. Е. Используя '\', а не File.separator).

171
задан teabot 6 November 2009 в 14:36
поделиться

5 ответов

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

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

223
ответ дан 23 November 2019 в 20:43
поделиться

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

String concat = "one" + "two";

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

34
ответ дан 23 November 2019 в 20:43
поделиться

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

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

25
ответ дан 23 November 2019 в 20:43
поделиться

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

18
ответ дан 23 November 2019 в 20:43
поделиться

Вы не можете сделать это самостоятельно, поскольку Java не допускает перегрузки операторов.

Однако за одно исключение. + и + = перегружены для объектов String.

14
ответ дан 23 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: