#java #import
Вместо Scanner может быть что угодно - суть ясна. А именно: зачем использовать второй вариант, если первый и набирать короче, и пригодится когда понадобится что-то ещё из java.util? Изучаю Java и во многих примерах из книг и статьях в интернете используется второй вариант импорта, но нигде не видел объяснения почему именно так. Наверное, у него есть какие-то преимущества перед первым?
Ответы
Ответ 1
Потому что в Java импорты нужны для разделения классов. Понятнее будет на примере. Допустим есть класс com.blabla.Scanner и вы написали import com.blabla.*;. А потом вам захотелось добавить импорт от java.util.Scanner и вы опять написали import java.util.*;. В этом случае, если вы в коде напишете Scanner, компилятор не поймет какой именно Scanner вам нужен. Полная запись импорта это не допустит Помню, как-то добавил импорт от android.support.v7.widget.* и android.widget.*;. Когда я написал Toolbar IDE как раз и заругалась, так как он есть в обоих пакетах. Добавил к v7.widget.Toolbar и все.Ответ 2
Аргументы за и против обоих вариантов есть в ответах к этому вопросу. Там же, в комментариях к ответам, сплошной холивар по поводу того, что "это не повод так делать, а делать наоборот - повод есть". Выделить оттуда можно такие моменты. За импорт всего пакета: Не приходится писать огромное количество импортов, а читающему - их пролистывать В плане производительность разницы нет Конфликты имён встречаются не часто и довольно просто разрешаются "Так советуют делать в книгах". В качества примера приводится отрывок из книги "Clean Code" Robert C. Martin. За достоверность отрывка не ручаюсь. За перечисление конкретных классов: Не происходят конфликты имён при импорте класса только из одного пакета. Причём речь идёт не только про первоначальную разработку кода, но и про переход на более новую версию Java. Коронным примером является переход с JDK 1.1 на 1.2 и import java.util.*; с import java.awt.*; при использовании List. Возможность понять к какому пакету относится класса при чтении кода без IDE Если в классе много импортов, то, вероятно, этот класс делает больше, чем должен В современных IDE можно скрыть блок импортов, чтобы не приходилось их пролистывать В итоге всё сводится к тому, что каждый решает для себя сам какой подход ему использовать. Лучшего решения нет, о чём, в том числе, свидетельствует бесконечный спор на эту тему.Ответ 3
java.util.* - импортируешь все, что есть в библиотеке import java.util.Scanner - импортируешь конкретно Scanner
Комментариев нет:
Отправить комментарий