Qual è la syntax per importare una class in un pacchetto predefinito in Java?

Possibile duplicato: come accedere alle classi java nel pacchetto predefinito?


È ansible importare una class in Java che si trova nel pacchetto predefinito? In tal caso, qual è la syntax? Ad esempio, se lo hai

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

in un file, puoi scrivere

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

in un altro file. Ma cosa succede se SomeClass.java non contiene una dichiarazione del pacchetto? Come faresti riferimento a SomeClass in AnotherClass ?

Non è ansible importare classi dal pacchetto predefinito. Evita di usare il pacchetto predefinito tranne per programmi di esempio molto piccoli.

Dalla specifica del linguaggio Java :

È un errore in fase di compilazione per importare un tipo dal pacchetto senza nome.

L’unico modo per accedere alle classi nel pacchetto predefinito è da un’altra class nel pacchetto predefinito. In tal caso, non preoccuparti di import , basta fare riferimento direttamente.

Non e ansible.

L’alternativa sta usando la riflessione:

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

Non è affatto un errore di compilazione! È ansible importare un pacchetto predefinito solo in una class di pacchetto predefinita.

Se lo fai per un altro pacchetto, allora sarà un errore di compilazione.

Come altri hanno detto, questa è una ctriggers pratica, ma se non si ha scelta perché è necessario integrarsi con una libreria di terze parti che utilizza il pacchetto predefinito, è ansible creare la propria class nel pacchetto predefinito e accedere al l’altra class in questo modo. Le classi nel pacchetto predefinito condividono fondamentalmente un singolo spazio dei nomi, quindi puoi accedere all’altra class anche se risiede in un file JAR separato. Assicurati solo che il file JAR si trovi nel classpath.

Questo trucco non funziona se la tua class non è nel pacchetto predefinito.