Классы, входящие в текущий используемый пакет можно использовать без импорта. При импорте class, идентичного по имени с соседним по пакету, он будет перекрыт. В таком случае будет использоваться импортированный class, при этом никакой ошибки компилятор не выдаст.
Если в одном классе будет присутствовать некоторое количество классов с идентичными названиями при компиляции возникнет ошибка.
Если импортировать класс не один раз, раз то приложение будет скомпилировано, но компилятор выдаст предупреждение о том, что есть неиспользуемый в приложении импорт.
Для static-импортов применяются те же инструкции. Простые импорты не должны конфликтовать со static.
Если требуется использовать некоторое количество классов или констант, с совпадающим названием, то обращаться к ним придётся по полным названиям. Импорты использовать не получится.
import ru.ievetrov.A;
import static ru.ievetrov.Letters.A;
class Test {
void test() {
// Никаких ошибок!
A letterAVariable = new A();
var enumElement = A;
}
}