Я пытаюсь ограничить что-нибудь другое , чем чистые целые получать с помощью функции .
У вас немного концептуальное несоответствие с Java. A char
в Java - это всего лишь число; тот факт, что вы используете тип char
вместо типа int
, - это то, что вы хотите число, равное 16 битам вместо 32 бит.
A char
- это всего лишь число, которое идет от 0 до 65535. int
- это всего лишь номер, который идет от -2,147,483,648 до 2,147,483,647.
Теперь я понимаю, что вы хотите, чтобы люди не вызывали ваш метод с бессмысленными вещами, такими как foo('t')
. Однако, как только ваша программа скомпилирована, Java фактически преобразует этот вызов в foo(116)
.
Фактически, кто-то, вызывающий ваш метод с символом в качестве параметра, такой же глупый, как вызов вашего метода с произвольным числом. Если вы застряли в такой ситуации, рассмотрите эти возможности:
Неправильно ли некоторые символы вводят ваш метод?
Например, вы хотите значение яркости от 0 до 255, а setBrightness('Δ')
- это фактически setBrightness(916)
.
Бросьте исключение - вы должны делать это в любом случае!
Вы хотите, чтобы символ, представляющий числовое значение, анализировался?
Например, вы хотите иметь значение яркости от 0 до 9, а setBrightness('5')
должно быть действительно setBrightness(5)
.
Разбор символов в виде строки.
_
char a = '5';
String a_s = String.valueOf(a);
int a_i = Integer.parseInt(a_s);
setBrightness(a_i)
метод делать ли все правильно, но передавая символ в качестве параметра глупо?
Например, вы хотите, чтобы значение яркости находилось в диапазоне от 0 до 1000000, а setBrightness('q')
просто потирает вас неправильно.
Оставьте это в покое. Вызов setBrightness('q')
- плохая форма, но это проблема другого кодера. Не делай этого сам, хотя! Вы будете пинать себя позже, когда вы копаете в таблице Unicode, пытаясь понять, что вы имели в виду в то время.
А я думаю, что это то, что я должен реализовать благодаря: D. И спасибо за подлый решение Pax, очень элегантный способ обойти его :) – user100617
Использование Integer вместо int может нести значительные накладные расходы более чем на 10x –
Вы можете сделать это временно, проверить, что код все еще компилируется и возвращается изменение если есть. –