why???
HelpeR_x3
40 уровень
help me
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
HelpeR_x3
6 августа 2019, 10:04
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;
}
private static Method getMainMethod() {
Method[] methods = Solution.class.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equalsIgnoreCase("main")) return method;
}
return null;
}
}
0
JustinianJudge в Mega City OneMaster
6 августа 2019, 10:57полезный
return allModifiers == specificModifier;
даже по названию переменных можно понять что происходит что-то не то..
Создадим
и твой код выдаст false.
Поскольку TRUE твой код выдаст только для случая, если это единственный модификатор.
Тогда и будет совпадение всеМодификаторы == конкретный модификатор.
Если модификаторов больше чем 1, то конечно же, это условие не будет выполнятся.
Что посоветовать, есть всеМодификаторы, в котором содержится и значение конкретного модификатора. Нужно с него вытянуть информацию есть ли там конкретный или нет.
true или false это 1 или 0.
Передаются инты , то есть набор 1 и 0.
В данном случае, если применить метод Integer.toBinaryString получается следующее (обрезал лишние нули):
0001
0001
//true
0001
1000
//false
1001
1000
//true
// - это то что от нас ожидает валидатор.
Видишь закономерности?
Почитай еще джава доки к методам, которые возвращают значения модификаторов, почитай стекоферфлоу.
Здесь нужно применить операцию к этим двум числам, и тогда мы получим наше true/false , или 1/0, смотря как посмотреть.
+1