Он предупреждает вас, потому что к статическим полям обращаются с использованием типа времени компиляции, а не типа времени выполнения объекта, что может вызвать затруднения при обнаружении ошибок.
Пример:
public class AAA{
public static String HELLO = "HI";
}
public class BBB extends AAA{
public static String HELLO = "Hello World";
}
AAA test = new BBB();
System.out.println(test.HELLO); //Will print String from AAA
//instead of "Hello World"
Без static
будет напечатано «Hello World».
Чтобы предотвратить эти ошибки, вы всегда должны обращаться к статическим переменным по классу, в котором они объявлены, вместо использования экземпляра. Компилятор предупреждает вас, поскольку нет веской причины не использовать имя класса.