Доступ к унаследованному подклассу в другом пакете - PullRequest
0 голосов
/ 24 октября 2018
package 1; // this is a dependency library

public class A{

public String getName(){
return "In func getName, class A";
}

}

-------------------------------------------
package 2; // this is the library which I am building
import 1;

public class B extends A{

}

----------------------------------------------
package 3; // this is the app which is using the library which I am building
import 2;

public class C {

B b = new B(); // throws error here, says "Cannot access A"
b.getName();
}

это выдает ошибку B b = new B(); Я не уверен, в чем здесь проблема, это должно работать нормально, верно?

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

Я добавил библиотеку зависимостей следующим образом: в библиотеке, которую я строю

implementation ':dependencyLibrary'

В приложении, использующем мою библиотеку

include ':mylibraryName' implementation project(':mylibraryName')

Я просто не хочу, чтобы 'dependencyLibrary' был доступен для приложения

1 Ответ

0 голосов
/ 24 октября 2018

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

Один из способов сделать это:

  1. Перейти к File -> New -> ImportМодуль ->
  2. Добавить библиотеку для включения раздела в файл settings.gradle и синхронизировать проект (После этого вы увидите, что в структуру проекта добавлена ​​новая папка с именем библиотеки)

include ': mylibraryName'

Перейдите в Файл -> Структура проекта -> Приложение -> вкладка зависимостей -> нажмите кнопку плюса

Элемент списка

Выберите зависимость модуля -> выберите библиотеку (там должно появиться имя вашей библиотеки) и укажите область действия (компиляция или реализация)

Добавьте эту строку в build.gradle в модуле уровня приложения в разделе зависимостей
implementation project(':mylibraryName')
...