2016-03-13 4 views
0

Я новичок в Java. У меня есть следующая структура пакета.Создайте объект класса из другого пакета с именем пакета

Пакет 1

  • AppName
    • Главная
    • SomeOtherClass

Пакет 2

  • API
    • нагрузки
    • Ответный

В главном классе AppName Пакет Я хочу, чтобы создать объект класса нагрузки пакета API.

Теперь я могу легко сделать это с помощью import API.*, а затем с помощью new Load();.

Но я хочу, чтобы полная коннотация класса Load. Я хочу сделать новый вызов API, используя new API.Load();

Так что я хочу, чтобы иметь возможность использовать префикс API. с конструкцией класса нагрузки. Это вообще возможно? Какой импорт будет работать? Просто использование new API.Load(); не работает. Студия Android не распознает ключевое слово API.

Любые идеи?

Edit:

Ok я вроде есть то, что я хочу. com.achshar.testapp.API - полное имя. Таким образом, new com.achshar.testapp.API.Load(); работает отлично. Теперь, как я могу сделать это new API.Load();?

+0

Является ли API корень? Или это часть другого пакета? –

+1

'import API. *; new Load(); 'должен быть эквивалентен' new API.Load(); '(кроме того, что импорт импортирует больше, чем просто Load). –

+0

Я считаю, что API - это подпакет основного пакета Android. – Achshar

ответ

1

Если у вас есть сомнения, вы можете использовать Class#getCanonicalName, чтобы распечатать полный путь к классу.

Здесь пример с ArrayList

List<String> str = new ArrayList<>(); 
System.out.println(str.getClass().getCanonicalName()); // java.util.ArrayList 

А теперь, если я хочу, я могу написать свои списки как следующий

java.util.List<String> list = new java.util.ArrayList<>(); 
+1

Хорошо, у меня есть то, что я хочу. 'com.achshar.testapp.API' - полное имя. Итак, 'new com.achshar.testapp.API.Load();' отлично работает. Любая идея, как я могу сделать это 'new API.Load();' now? – Achshar

+0

Это не работает. API все еще выступает как неразрешенный символ. – Achshar

+1

@Achshar Невозможно сделать это возможным. Что вы можете сделать, это создать свой собственный пакет API в корне и поместить в него класс. –

1

Вы можете создать свой API (какой-то, как прокси-слой). В нем вы можете создать класс Load.java класса Callback.Java. Укажите другое имя для своего пакета. Если классы в пакете API пакета 2 не объявлены окончательными, а также имеют общедоступные конструкторы, вы можете расширить каждый класс, чтобы создать новый класс в созданном новом пакете API. В новом классе, который вы создаете, вы можете переопределить методы (функции) и дать свое поведение. Вы можете использовать super.methodOfAPI для получения поведения, предоставляемого родительским классом, а затем можете написать свой код, чтобы добавить нужное поведение.

Вам необходимо позаботиться о том, когда вы хотите использовать оригинальные классы пакетов API, а также из созданного слоя. Используйте свой импорт соответственно. Другой выход - добавить некоторое общее слово, например «Прокси», в конце классов, которые вы создаете в новом пакете API, который вы создаете, он разрешит конфликты.

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