Подтвердить что ты не робот

Конвертировать из булева в байт в java

Мне нужно установить значение байта в качестве параметра метода. У меня есть логическая переменная isGenerated, которая определяет логику, которая должна выполняться в этом методе. Но я могу передать непосредственно логический параметр байта, который не разрешен и не может быть добавлен в java. Итак, решение, которое у меня есть, выглядит следующим образом:

myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0);

Но мне кажется странным. Может быть, для этого существует какое-то лучшее решение?

4b9b3361

Ответ 1

ваше решение правильно.

если вам нравится, вы можете избежать одного нажатия, выполнив его следующим образом:

myObj.setIsVisible((byte) (isGenerated ? 1 : 0 ));

дополнительно вы должны рассмотреть одно из следующих изменений в своей реализации:

  • измените свой метод на нечто вроде setVisiblityState (состояние байта), если вам нужно рассмотреть более двух возможных состояний.

  • измените свой метод на setIsVisible (логическое значение), если ваш метод делает то, что он похож на

Ответ 2

Вы можете использовать это решение. Я нашел его на этой очень полезной странице

boolean vIn = true;
byte vOut = (byte)(vIn?1:0);

Ответ 3

Это не странно. Все хорошо. Нечетным является то, что вам нужно преобразовать типизированное логическое значение в не сам объясняемый байт. Однако иногда мы должны это делать, работая с устаревшими API.

BTW, если вы хотите сохранить память, вы можете использовать 1 бит вместо байта, поэтому вы можете группировать несколько логических флагов вместе, используя бит для каждого логического значения. Но эта техника важна для огромных объемов данных только при сохранении нескольких байтов.