Em um comando do tipo:
import xcom.Stuff.*;
O que está sendo importado por ele?
A dúvida surgiu pelo seguinte: não estou realizando um static import e o import acima não gera erro de compilação. Acredito que não esteja importando os elementos não estáticos da classe Stuff, pois eu não poderia usar os seus métodos, por exemplo, sem uma instância da classe.
Vou dar um exemplo para ficar mais claro:
package xcom;
public class Stuff {
public final int MY_CONSTANT = 5;
public int doStuff(int x) {
return (x++)*x;
}
}
import xcom.Stuff.*;
import static java.lang.System.out;
class User {
public static void main(String[] args) {
new User().go();
}
void go() {
out.println(doStuff(MY_CONSTANT));
}
}
A classe User não compila. Isso era de se esperar. O único modo de fazer User compilar é modificar import xcom.Stuff.*; por import static xcom.Stuff.*; e na classe Stuff, doStuff e a constante sejam ambos estáticos.
Voltando ao programa original e comentado a linha 13 de User, o programa compila. Afinal, o import import xcom.Stuff.*; não estático está fazendo o quê?