I casi in cui le importazioni in Java non sono necessari (qualificazione insolito) [Domanda Edited]
Domanda
Ho notato che ci sono alcuni modi speciali per qualificarsi un'entità in Java:
Object o = new Outer().new Inner();
In questo caso, stiamo qualificanti la classe interna con la classe esterno, quindi abbiamo solo bisogno di importare la classe esterno:
import mypackage.Outer;
Ci sono altri casi come questo? (Cioè, dove un insolita ??em> di qualificazione avviene - dalla inusuale io non intendo: fullQualifier.identifier
).
Sono esclusi i casi delle importazioni automatici (java.lang, tipi primitivi, ecc.)
Soluzione
Credo che si fraintendono il costrutto che hai descritto:
Object o = new Outer().new Inner();
è in realtà un modo per qualificare completamente il costruttore della classe Inner
, proprio come in
Outer.Inner i = new Outer().new Inner();
D'altra parte, si potrebbe scrivere questo:
import path.to.Outer;
import path.to.Outer.Inner;
// ...
Inner i = new Outer().new Inner();
Altri suggerimenti
Inoltre, non avrebbe bisogno di importare una classe se:
-
si utilizza il percorso completo per l'oggetto. Ad esempio:
java.util.Date d = new java.util.Date();
-
la classe è nella stessa confezione
- la classe è nel pacchetto
java.lang
esempioString
l'imballaggio esterno in questo caso compresa la confezione interna, ecco perché non c'era bisogno ti importare il pacchetto interno, nella maggior parte dei casi non v'è alcuna necessità di importare un intero pacchetto solo per utilizzare un componente ..per esempio voglio solo per usare una stringa, non c'è bisogno ti importare l'intero java.lang. In alcuni complicato utilizzo librerie se si utilizza alcuni IDE possono risolvere le importazioni per voi, per esempio in NetBeans CTRL + MAIUSC + io risolvere il tuo importazioni