Java - проверка на переполнение по умолчанию - PullRequest
0 голосов
/ 26 мая 2018

Конечно, проверенное переполнение может замедлить код и, следовательно, не может быть вариантом в критических по времени разделах.

Однако в больших частях кода небольшое замедление в скорости выполнения кажется несущественным, и некоторыедругие языки сами избегают переполнения.Хотя я знаю, что, поскольку в Java 8 есть методы в библиотеке Math, которые позволяют проверять арифметические операции, они довольно многословны и неудобны в использовании.

Например:

a + b
против
addExact(a,b)

Вместо этого я ищу способ (библиотека / IDE?), Который позволяет мне использовать + в качестве проверяемого дополнения и т. Д., И вместо этого предоставлять методы для непроверенныхарифметика для редкого случая действительно подразумевает поведение.

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Вместо этого я ищу способ (библиотека / IDE?), Который позволил бы мне использовать + в качестве проверенного сложения и т. Д., И вместо этого предоставить методы для непроверенной арифметики для редкого случая, в котором действительно подразумевается поведение.

Нет Java IDE / библиотеки / функции языка Java / чего бы то ни было.

Язык Java не проверяет наличие недостаточного количества.Целочисленные типы используют модульную арифметику.И вы не найдете менее многословного для выполнения арифметики без переполнения, чем эти методы в классе Math.

Если вам нужно выполнить много арифметических операций с проверкой переполнения или переполнения И вы хотите, чтобы языксделайте что-нибудь с этим, посмотрите, что делают некоторые другие языки программирования;например, статья в Википедии о переполнении целых чисел .

0 голосов
/ 26 мая 2018

Использование + для проверенной арифметики означало бы перегрузку поведения оператора по умолчанию, которое Java не позволяет (см. Почему java не допускает перегрузку оператора ).Поэтому такая функциональность не может быть реализована.

При этом лучше всего сэкономить на наборе текста, связав фрагмент текста с + (поэтому a + и space превращаются в addExact(a,).

...