Не могли бы вы помочь мне понять ошибку компилятора java8 в строке k3.
public class Color {
private int hue = 10;
public class Shade {
public int hue = 20;
}
public static void main(String[] args) {
System.out.println(new Color().hue); // k1
System.out.println(new Color().new Shade().hue); //k2
System.out.println(new Shade().hue); //k3
}
}
Приведенный выше код компилируется, если я закомментирую k3. k1 выводит 10, k2 выводит 20.
С k3 компиляция не сообщает:
Color.java:11: error: non-static variable this cannot be referenced from a static context
System.out.println(new Shade().hue);
Основной метод находится в статическом контексте, понятен. Где на этой картинке нестатическая переменная this. Спасибо.
new Shade()
нужнаColor
-ссылка. Это не имеет ничего общего с доступом к переменной - удалите.hue
, он все равно не скомпилируется - person Hulk   schedule 28.01.2019static class Shade
, он будет компилироваться. - person Hulk   schedule 28.01.2019