2010-02-13 3 views
6

Possible en double:
Import package.* vs import package.SpecificTypeComment importer une classe java?

Puis-je faire:

import java.awt.* 

au lieu de:

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

si les deux voies sont corr ect lequel est le meilleur?

+1

double exact: http://stackoverflow.com/questions/187453/import-package -vs-import-package-specifictype –

+1

@Mark - Je ne pense pas mais merci pour vos observations, je me demande si vous êtes disposé/capable d'ajouter quelque chose à des réponses ci-dessous? –

+0

Je l'ai déjà fait ... –

Répondre

14

Vous pouvez importer le package général, mais il est préférable d'être plus explicite et d'importer les classes spécifiques dont vous avez besoin. Il aide à prévenir les problèmes de collision d'espace de noms et est beaucoup plus agréable. En outre, si vous utilisez Eclipse et le raccourci CTRL + MAJ + O, les importations explicites seront générées automatiquement, ce qui vous incitera à importer les importations ambiguës.

+1

+1 Je nomme cette réponse pour acceptation. –

+1

@Jon - merci pour votre contribution, ce que la collision d'espace de noms peut causer? le compilateur renverra l'erreur? –

+1

par exemple. Si vous utilisez Date date = new Date(); et importer java.util. * et importer java.sql. * vous vous retrouverez avec une erreur de syntaxe pour "Le type Date est ambigu". – Jon

4

Un qui est plus explicite.

EDIT: Avantage de la deuxième méthode est la lisibilité, pas de conflit d'espaces de noms, etc. Mais si vous avez des centaines de classes à importer d'un paquet, vous feriez mieux d'adopter la première approche.

+4

Pourquoi? Quel est l'avantage? – Dustman

7

Il importera uniquement des classes dans java.awt, donc vous devez importer java.awt.event aussi:

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

Deuxième méthode sera probablement charger moins classes, mais ne vous sauvera pas beaucoup de mémoire.

+2

++. Le compilateur est bon pour importer uniquement les classes réellement utilisées, donc le seul avantage d'importer des classes particulières est de réduire la probabilité de collision de noms non qualifiés. – Dustman

+2

Un exemple spécifique est si vous importez java.awt. * Et java.util. *, Puis essayez d'utiliser List. Dans ce cas, vous devez importer une classe spécifique. –

6

Ils sont tous les deux bons. Le premier est moins verbeux, mais le second vous permettra d'être précis sur les classes que vous importez, ce qui vous permettra d'éviter les collisions. Comme la plupart des IDE vous permettent de masquer les instructions d'importation, la verbosité de la seconde n'est pas vraiment un problème.

Tenez compte

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

lorsque vous essayez de déclarer une List, vous aurez une collision entre java.awt.List et java.util.List

Questions connexes