я не могу использовать BuildConfig.DEBUG - PullRequest
0 голосов
/ 13 мая 2018

Когда я использую

BuildConfig.DEBUG

в Kotlin, я получаю эту ошибку:

expecting member declaratuon

Мой код:

class API {

    companion object {
        private lateinit var instance: Retrofit
        private const val baseUrl = baseURL

        if (BuildConfig.DEBUG) {
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
            builder.addInterceptor(interceptor);
        }

}

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вы делаете вызов вне функции или конструктора. Вы не можете иметь операторы if вне тел методов, что применимо как к Kotlin, так и к Java.

object тоже классы, хотя они следуют шаблону синглтона. Вы по-прежнему не можете помещать операторы if вне тел методов. Объявления уровня класса могут содержать только методы, конструкторы и поля и некоторые блоки (т. Е. init), а не операторы if и вызовы определенных переменных.

Кроме того, вы используете синтаксис Java, который вообще не будет компилироваться. Вместо этого используйте синтаксис Kotlin и переместите его в блок init внутри объекта-компаньона.

Блок инициализации вызывается как инициализация, когда инициализируется сопутствующий объект.

companion object{
    //Other declarations

    init{
        if (BuildConfig.DEBUG) {
            var interceptor = HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
            builder.addInterceptor(interceptor);//I have no clue where you define builder, but I'm assuming you've done it *somewhere* and just left it out of the question
        }
    }
}
0 голосов
/ 13 мая 2018

Вы не можете использовать оператор if как объявление верхнего уровня, вы должны объявить его внутри функции или блока init.

Так что-то вроде этого, возможно:

class API {

    companion object {
        private lateinit var instance: Retrofit
        private const val baseUrl = baseURL

        init {
            if (BuildConfig.DEBUG) {
                HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
                interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
                builder.addInterceptor(interceptor);
            }
        }
    }
}
...