Нельзя использовать нестатические (экземплярные) поля в статическом методе.Это потому, что статический метод не связан с экземпляром.
Метод static
- один на класс, в то время как класс может иметь много экземпляров.Итак, если у вас есть 2 экземпляра, поля которых будут видеть статические методы?
Давайте представим, что это действительно:
class Foo {
private int bar;
public static int getBar() {
return bar; // does not compile;
}
}
А затем:
Foo foo1 = new Foo();
foo1.bar = 1;
Foo foo2 = new Foo();
foo2.bar = 2;
Foo.getBar(); // what would this return. 1 or 2?