2012-04-25 2 views
4

Я замечал неожиданные результаты с моими import с, и я надеюсь понять, что происходит на самом деле. Я начал со следующим:Как работают шаблоны в Java-импорте?

import java.util.*; 
import java.io.*; 
import java.nio.*; 
import java.nio.file.Path; 
import java.nio.file.StandardOpenOption.*; 
import java.nio.file.Paths; 

, а затем обнаружили, что ArrayList и ListIterator не работает ... так что я добавил

import java.util.ArrayList; 
import java.util.ListIterator; 

и все работает отлично.

Я бы предположил, что java.util.* также импортировал бы ArrayList и ListIterator. Почему не так?

У меня есть склонность быть чрезмерно многословной с именами моего класса/метода/переменной, и я ничего не нашел в остальной части программы, которая была равна , закрыв зарезервированному слову.

Я не могу найти что-либо в документации, которая подсказывает, почему это произойдет, и большая часть обсуждения на стеке - это оптимизация с использованием * или явно закодированного импорта.

У кого-нибудь есть идеи, что еще я могу посмотреть, чтобы понять это поведение?

+2

Что именно вы подразумеваете под «не работает»? Вы можете показать короткую, но полную программу, демонстрирующую проблему? –

+0

Я не получаю вашу проблему –

+0

Создайте минимальный пример, где вы сможете продемонстрировать свою проблему. Не используйте свой массивный класс. –

ответ

6

import java.util.* импорт java.util.ArrayList и все остальное в этом пакете тоже. Обратите внимание, что нет понятия субпакетов, поэтому он ничего не будет импортировать из java.util.x или java.util.y, но это не похоже на вашу проблему.

У вас должна быть какая-то другая проблема с вашим кодом, если она не работает, операторы импорта определенно ведут себя, как вы описываете.

0

Я пробовал в затмении.

import java.util.*; 

Эти оба класса не требуют импорта снова.

import java.util.ArrayList; 
import java.util.ListIterator; 

, потому что дикие карты * означает импортировать все вложенные классы и пакеты (помните, не пакет суб-класс)

если вы импортировать

import java.util.*; 

я импортирует java.util.jar пакет но не jar подклассы :)

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