У меня проблема с доступом к абстрактному классу.
Для фона у меня есть абстрактный класс в общем модуле. Абстрактный класс - это просто setters / getters для некоторых значений.
abstract class BaseConfiguration {
abstract var key: String?
abstract var token: String?
}
Общий модуль используется другим модулем, который является SDK. Таким образом, в Gradle реализован этот общий модуль.
Gradle
implementation project(":common")
Внутри модуля SDK есть публичные c интерфейсы, позволяющие устанавливать / получать значения в Файл BaseConfiguration.
Конфликт, с которым я сталкиваюсь, заключается в том, что для Kotlin все работает нормально. Я могу создать проект, затем добавить SDK в качестве зависимости и затем установить значения для BaseConfiguration через предоставленные интерфейсы в SDK.
Однако, когда я пытаюсь использовать язык Java, я получаю сообщение об ошибке «Не удается получить доступ к BaseConfiguration». Единственное, что, по-видимому, решает эту проблему, - это обновить мой Grak SDK до api.
Изменения Gradle
api project(":common")
У меня есть проблемы с этим изменением, поскольку предполагается, что общий модуль внутренний и используется только в SDK. Уровень приложения не должен иметь к нему доступа. Приложение должно получать доступ только к предоставленным интерфейсам с помощью SDK.
Кто-нибудь знает, почему это прекрасно работает с Kotlin, но не с Java? Что я делаю неправильно?
Дополнительные примечания: при декомпиляции от Kotlin до Java для класса BaseConfiguration это показывает, что все опубликовано c.
public abstract class BaseConfiguration {
@Nullable
public abstract String getKey();
public abstract void setKey(@Nullable String var1);
@Nullable
public abstract String getToken();
public abstract void setToken(@Nullable String var1);
}