происходит выяснение, получили мы 0 или 1, и от этого зависят выводы в отношении равенства.
Насколько я понял, при логическом AND (&) мы получим какое-то число, значительно отличающееся от 0 или 1. Как так?
Другими словами я не могу понять из лекции ту часть, в которой с помощью логического AND сравнивают отдельные биты.
Дальше цитата из лекции:
Но какую логику писать в методе? Нужно применить логическое AND (&), которое равно 1, если оба бита равны 1. В остальных случаях 0. Наш метод окончательно будет выглядеть так:
public static boolean isModifierSet(int allModifiers, int specificModifier) {
return (allModifiers & specificModifier) > 0;
}
package com.javarush.task.task21.task2102;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/*
Сравниваем модификаторы
*/
public class Solution
public static void main(String[] args) {
int classModifiers = Solution.class.getModifiers();
System.out.println(isModifierSet(classModifiers, Modifier.PUBLIC)); //true
System.out.println(isModifierSet(classModifiers, Modifier.STATIC)); //false
int methodModifiers = getMainMethod().getModifiers();
System.out.println(isModifierSet(methodModifiers, Modifier.STATIC)); //true
}
public static boolean isModifierSet(int allModifiers, int specificModifier) {
return (allModifiers & specificModifier) != 0;
}
private static Method getMainMethod() {
Method[] methods = Solution.class.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equalsIgnoreCase("main")) return method;
}
return null;
}
}