Qual é a syntax para importar uma class em um pacote padrão em Java?

Possível Duplicar: Como acessar as classs java no pacote padrão?


É possível importar uma class em Java que está no pacote padrão? Se sim, qual é a syntax? Por exemplo, se você tem

package foo.bar; public class SomeClass { // ... 

em um arquivo, você pode escrever

 package baz.fonz; import foo.bar.SomeClass; public class AnotherClass { SomeClass sc = new SomeClass(); // ... 

em outro arquivo. Mas e se SomeClass.java não contiver uma declaração de pacote? Como você se referiria ao SomeClass no AnotherClass ?

Você não pode importar classs do pacote padrão. Você deve evitar usar o pacote padrão, exceto para programas de exemplo muito pequenos.

Da especificação da linguagem Java :

É um erro de tempo de compilation para importar um tipo do pacote sem nome.

A única maneira de acessar classs no pacote padrão é de outra class no pacote padrão. Nesse caso, não se import em import lo, apenas refira-se a ele diretamente.

Isso não é possível.

A alternativa é usar reflection:

  Class.forName("SomeClass").getMethod("someMethod").invoke(null); 

Não é um erro de compilation! Você pode importar um pacote padrão apenas para uma class de pacote padrão.

Se você fizer isso para outro pacote, então será um erro de compilation.

Como outros já disseram, isso é uma prática ruim, mas se você não tem escolha porque precisa se integrar a uma biblioteca de terceiros que usa o pacote padrão, você pode criar sua própria class no pacote padrão e acessar o pacote padrão. outra class desse jeito. As classs no pacote padrão basicamente compartilham um único namespace, para que você possa acessar a outra class, mesmo que ela resida em um arquivo JAR separado. Apenas certifique-se de que o arquivo JAR esteja no caminho de class.

Esse truque não funciona se sua class não estiver no pacote padrão.