статический импорт

120
24 июня 2021, 19:00

решил немного побаловаться статическим импортом, в смысле немного поэкспериментировать.

package harc61;
public class B {
    static int k=58;
}

..............................

package harc61;
import static harc61.B.k;
public class C {
    String seq = "c";
     k=8; //не распознает, пишет unknown class 'k', Identifier expected, 
          //Unexpected Token
    {k=8;} //распознает
    static {k=8;} //распознает
    public static void main(String[] args) {
        k=8; //распознает
    }
}

если бы и в случае static{} не распознавала, я бы смог как то предположениями себе уговаривать без дополнительного изучения данной ситуации принять результат как факт, а так в тупике Я.

ну вопрос таков: Почему статический импорт почти во всех местах распознается, кроме того одного места?

Answer 1

Это одно место - тело класса, в котором нельзя присваивать переменным другие значения.

Важно понимать разницу между присвоением и инициализацией. Когда вы присваиваете переменной другое значение, это значит, что это присвоение является частью какой-то череды команд, которые должны выполняться в строго определённом порядке.
Инициализация же переменной происходит раньше (при создании экземпляра класса, если переменная нестатическая, либо при первом обращении к классу в обратном случае), она является, грубо говоря, фундаментом для дальнейшего выполнения программы.

Тело класса служит пространством для объявления и инициализации переменных и методов, поэтому присвоение там запрещено. Для этого есть блоки инициализации, в которых, не смотря на название, можно присваивать значения.

READ ALSO
Биометрическая авторизация

Биометрическая авторизация

1) Возможно ли обойтись без диалога? У нас своеобразный дизайн под данную авторизацию2) Как можно настроить стиль для данного диалога? Цвет...

183
Runtime Permissions

Runtime Permissions

Пытаюсь сделать скриншот по нажатию кнопки следующим образом:

127
Как заполнить ArrayList массивами?

Как заполнить ArrayList массивами?

Есть текстовый файл, в который записаны числа (каждое с новой строки) в таком формате: 1075 5018 6542 1456 и тд Хочу создать ArrayList массивов и каждый...

115
Поиск по enum. Java

Поиск по enum. Java

Всем привет! У меня есть два EnumВ одном написана стоимость, в другом предмет

255