2010-04-03 3 views
4

Est-ce que charger uniquement les classes nécessaires est un bon moyen de réduire l'utilisation globale de la mémoire d'une application Java?Java: astérisque pour le chargement des classes

Par exemple:

import java.awt.Graphics; 

vs

import java.awt.*; 
+2

* est diabolique. Mal diabolique mal. –

Répondre

16

Non Vous devez importer uniquement les classes nécessaires pour faire comprendre aux programmeurs quelles classes sont réellement nécessaires par votre classe.

Les instructions d'importation indiquent simplement au compilateur où chercher les classes que vous utilisez - cela ne signifie pas que toutes les classes du paquet sont chargées en mémoire.

+2

Plus important encore, vous mettez le nom complet des classes que vous importez afin d'éviter tout conflit de noms: http://stackoverflow.com/questions/187453/import-package-vs-import-package-specifictype – defectivehalt

+1

.. Faites-le clair aux compilateurs! –

+2

Peut-être qu'il serait bon de mentionner aussi ... les IDE modernes prennent soin de la corvée d'ajouter les importations pour vous donc il ya vraiment peu de raisons de ne pas utiliser des importations pleinement qualifiées. –

6

Pour le dire simplement: non.

import Les instructions ne sont traduites dans aucune forme de bytecode. Ce ne sont que des raccourcis pour éviter d'utiliser (moche!) Des noms de types complets.

1

Vouliez-vous dire les importations d'étoiles comme import pack.*;?

En Java, cela n'a rien à voir avec l'utilisation de la mémoire, import est seulement utilisé pour changer la façon dont vous référencez les classes. Cependant, il existe des problèmes de pratiques de codage concernant les importations d'étoiles.

0

L'importation explicite des classes dont vous avez besoin par rapport à un * -import ne fait aucune différence. La JVM ne charge que ce que vous finissez d'utiliser et rien de plus. Cela dit, importer explicitement vos classes est une bonne décision de conception de logiciel (et * -import est le signe des fainéants qui ne connaissent pas ou ne se soucient pas de bons principes de conception de logiciels ... Je ne plaisante pas, je suis mortellement sérieux.)

+4

Je m'intéresse aux bons principes de conception de logiciels.J'utilise des importations d'étoiles de temps en temps. Je ne suis pas un fainéant. C'est totalement une question de style * de codage *. Cela n'a rien à voir avec le logiciel * design *. –

+2

Pour moi, l'importation d'étoiles est une question d'environnement. Suis-je dans le Bloc-notes? Gimme-les les importations d'étoiles de Lurvly. Est-ce que j'écris de vrais programmes? Laissez l'IDE gérer (et par Dieu s'il ne fait pas les importations simples je jure que je vais – gustafc

4

Comme d'autres l'ont dit, les importations sont utilisées par le compilateur seulement. Vous POUVEZ écrire votre programme entier sans n'importe quelles importations en employant les noms complets de tout, mais cela deviendrait rapidement plutôt grand.

java.io.InputStream is = new java.io.FileInputStream(new java.io.File("foo")); 

L'étoile-importation est de le rendre moins fastidieux d'écrire toutes les déclarations d'importation à la main, mais aussi entraîner beaucoup de choses importées, de sorte que le compilateur a plus d'une possibilité. Les IDE modernes comme Eclipse importent donc tout un par un donc cela ne peut pas arriver.

1

J'utilise généralement des noms de types complets, plutôt que des instructions aussi grandes. Les paquets existent pour une raison, et c'est parce que le développeur de ce paquet a probablement rempli son espace de nom de paquet avec toutes sortes de conneries que vous n'aimez pas, et vous voulez juste cette classe.

Questions connexes