Как работать поразрядно? (Оператор & не может быть применен к Integer или int) - PullRequest
0 голосов
/ 30 мая 2019

Я хочу проверить некоторые разрешения в приложении для Android, я получил эти разрешения от API, который я использую для различных устройств и языков программирования, но это моя первая попытка на JAVA (Android), и, похоже, она другая.

В моем приложении эти разрешения находятся в классе, который возвращает их как Integer, поэтому, если я хочу проверить, может ли пользователь удалить (десятичное число 4), я хочу сделать что-то вроде этого:

if(MyClass.getBit()&4){ // Is bit 2 on?
    // Yes, is on
}

Я получил следующую ошибку:

Обязательный Boolean, Найдено Int.

Все в порядке, я могу сделать его логическим:

if(MyClass.getBit()&4 != 0){ // Is bit&4 not 0?
    // Yes, it is different
}

Я получаю новую ошибку:

Оператор '&' нельзя применить к 'java.lang.Integer', 'boolean'

Поэтому я изменил возвращаемое значениезначение int, я получил то же самое:

Оператор '&' не может быть применен к 'int', 'boolean'

Похоже, я не собираюсьна правильном пути ...

Как управлять битвойсом на Android?

1 Ответ

2 голосов
/ 30 мая 2019

Это проблема приоритета, вы должны добавить круглые скобки,

if ((MyClass.getBit()&4) != 0){ // Is bit&4 not 0?
    // Yes, it is different
}

Без скобок сначала выполнялась бы часть (4! = 0), которая возвращает логическое значение, затем оператор AND для этого логического значения и целое число слева.

...