2010-02-13 31 views
6

Eventuali duplicati:
Import package.* vs import package.SpecificTypeCome importare la classe java?

posso fare:

import java.awt.* 

invece di:

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

se entrambi i modi sono corr ect quale è migliore?

+1

duplicato esatto: http://stackoverflow.com/questions/187453/import-package -vs-import-package-specifictype –

+1

@Mark - Non penso ma grazie per le tue osservazioni, mi chiedo se sei disposto/in grado di aggiungere qualcosa alle risposte sottostanti? –

+0

L'ho già fatto ... –

risposta

14

È possibile importare il pacchetto generale, ma è meglio essere più espliciti e importare le classi specifiche necessarie. Aiuta a prevenire i problemi di collisione nello spazio dei nomi ed è molto più bello.

Inoltre, se si utilizza Eclipse e la combinazione CTRL + MAIUSC + O genererà automaticamente le importazioni esplicite, richiedendo le importazioni ambigue.

+1

+1 Ho nominato questa risposta per accettazione. –

+1

@Jon - grazie per l'input, quale collisione nello spazio dei nomi può causare? il compilatore restituirà un errore? –

+1

ad es. Se usi Data data = nuova Data(); e importare java.util. * e importare java.sql. * si finirà con un errore di sintassi per "Il tipo Data è ambiguo". – Jon

4

Uno che è più esplicito.

MODIFICA: Il vantaggio del secondo metodo è la leggibilità, nessun conflitto di spazi dei nomi, ecc. Ma se si hanno centinaia di classi da importare da un pacchetto, è meglio andare con il primo approccio.

+4

Perché? Qual è il vantaggio? – Dustman

7

Sarà importare solo le classi in java.awt, quindi bisogna importare java.awt.event troppo:

import java.awt.* 
import java.awt.event.*; 

Secondo metodo sarà probabilmente caricare meno classi, ma non vi farà risparmiare molta memoria.

+2

++. Il compilatore è valido solo per importare classi che vengono effettivamente utilizzate, quindi l'unico vantaggio di importare classi particolari è mantenere bassa la probabilità di una collisione di nomi non qualificata. – Dustman

+2

Un esempio specifico è se si importano java.awt. * E java.util. * E quindi si prova ad usare List. In questo caso devi importare una classe specifica. –

6

Sono entrambi buoni. Quello superiore è meno dettagliato, ma il secondo ti permetterà di essere specifico sulle classi che importi, permettendoti di evitare le collisioni. Poiché la maggior parte degli IDE ti consente di nascondere le istruzioni di importazione, la verbosità del secondo non è realmente un problema.

Considerare

import java.util.*; 
import java.awt.*; 

quando si tenta di dichiarare una List, si avrà una collisione tra java.awt.List e java.util.List

Problemi correlati