Невозможно сделать статическую ссылку на нестатический метод
Это означает, что для вызова того метода, который вы пытаетесь сделать, вам нужна ссылка на экземпляр этого класса.
Вот пример, иллюстрирующий разницу:
public class Foo{
public static int staticVariable = 5;
public static void methodStatic(){}
public void nonStaticMethod(){}
}
вот как вы можете их использовать:
Foo.nonStaticMethod(); //can call static method referring to the class itself without having an instance
Foo f = new Foo();
f.nonStaticMethod(); //you need an instance of a Foo class in order to call a non-static method
Что касается статических переменных, то это переменные, которые не принадлежат одному экземпляру класса, но совместно используются всеми различными экземплярами одного и того же класса:
Foo a = new Foo();
Foo b = new Foo();
System.out.println(a.staticVariable); //print 5
System.out.println(b.staticVariable); //print 5
a.staticVariable = 10;
System.out.println(b.staticVariable); //print 10
(Пожалуйста, посмотрите на пример выше, чтобы понять, что такое статическая переменная. Вы получите предупреждение «получить доступ к статическому полю нестатическим способом», потому что это неправильный способ доступа к этим переменные)