Что синтаксис должен импортировать класс в пакете по умолчанию в Java? [дубликат]

Этот вопрос уже имеет ответ здесь:

Действительно ли возможно импортировать класс в Java, который находится в пакете по умолчанию? Если так, каков синтаксис? Например, если Вы имеете

package foo.bar;

public class SomeClass {
    // ...

в одном файле можно записать

package baz.fonz;

import foo.bar.SomeClass;

public class AnotherClass {
    SomeClass sc = new SomeClass();
    // ...

в другом файле. Но что, если SomeClass.java не содержит объявление пакета? Как Вы обратились бы к SomeClass в AnotherClass?

51
задан Stephen C 2 November 2018 в 20:13
поделиться

4 ответа

Нельзя импортировать классы из пакета по умолчанию. Вы должны избегать использования пакета по умолчанию, за исключением очень маленьких примеров программ.

Из спецификации языка Java Java:

Это компиляция ошибка во времени для импорта типа из безымянный пакет.

105
ответ дан 7 November 2019 в 09:46
поделиться

Это невозможно.

Альтернативой является использование отражения:

 Class.forName("SomeClass").getMethod("someMethod").invoke(null);
13
ответ дан 7 November 2019 в 09:46
поделиться

Как сказали, это плохая практика, но если у вас нет выбора, потому что вам нужно интегрировать со сторонней библиотекой, которая использует пакет по умолчанию, то вы можете создать свой собственный класс в пакете по умолчанию. и доступ к другому классу таким образом. Классы в пакете по умолчанию в основном разделяют одно пространство имен, поэтому вы можете получить доступ к другому классу, даже если он находится в отдельном файле JAR. Просто убедитесь, что файл JAR находится в классе.

Этот трюк не работает, если ваш класс не находится в пакете по умолчанию.

2
ответ дан 7 November 2019 в 09:46
поделиться

Единственный способ доступа к классам в пакете по умолчанию - из другого класса в пакете по умолчанию. В этом случае не беспокойтесь об импорте , просто обратитесь к нему напрямую.

35
ответ дан 7 November 2019 в 09:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: