2010-02-13 3 views
6

Можно создать дубликат:
Import package.* vs import package.SpecificTypeКак импортировать класс java?

Могу ли я сделать:

import java.awt.* 

вместо:

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

если оба пути корр Какой из них лучше?

+1

точная копия: http://stackoverflow.com/questions/187453/import-package -vs-import-package-specifictype –

+1

@Mark - Я так не думаю, но спасибо за ваши наблюдения, интересно, хотите ли вы/можете добавить что-то к нижеследующим ответам? –

+0

Я уже сделал ... –

ответ

14

Вы можете импортировать общий пакет, но лучше быть более явным и импортировать определенные классы, в которых вы нуждаетесь. Это помогает предотвратить проблемы с конфликтами пространства имен и намного лучше.

Кроме того, если вы используете Eclipse и ярлык CTRL + SHIFT + O, он автоматически генерирует явный импорт, предлагая вам неоднозначный импорт.

+1

+1 Я выдвигаю этот ответ для принятия. –

+1

@Jon - спасибо за ваш вход, что может вызвать столкновение пространства имен? компилятор вернет ошибку? –

+1

, например. Если вы используете Date date = new Date(); и импортируйте java.util. * и импортируйте java.sql. * вы получите синтаксическую ошибку для «Тип Date неоднозначно». – Jon

4

То, что является более явным.

EDIT: Преимущество второго метода - читаемость, отсутствие конфликтов пространств имен и т. Д. Но если у вас есть сотни классов для импорта из одного пакета, лучше перейти к первому подходу.

+4

Почему? В чем преимущество? – Dustman

7

Он импортирует только классы в java.awt, так что вы должны импортировать java.awt.event тоже:

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

Второй метод, вероятно, загружать меньше классов, но не позволит вам сэкономить много памяти.

+2

++. Компилятор хорош только для импорта классов, которые фактически используются, поэтому единственным преимуществом импорта конкретных классов является предотвращение вероятности неквалифицированного столкновения имен. – Dustman

+2

Одним из конкретных примеров является импорт java.awt. * И java.util. *, А затем попытка использования List. В этом случае вам нужно импортировать определенный класс. –

6

Они оба хороши. Верхний - менее подробный, но второй позволит вам быть конкретным относительно импортируемых вами классов, позволяя избежать столкновений. Поскольку большинство IDE позволят вам скрывать операторы импорта, многословие второй не является проблемой.

Рассмотрим

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

при попытке объявить List, вы будете иметь столкновение между java.awt.List и java.util.List

Смежные вопросы