我不会用 BuildConfig.DEBUG

i cant use BuildConfig.DEBUG

当我使用

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);
        }

}

你不能像那样使用 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);
            }
        }
    }
}

您正在函数或构造函数外部进行调用。你不能在方法体之外有 if 语句,这适用于 Kotlin 和 Java。

object 也是 class,尽管它们遵循单例模式。您仍然不能将 if 语句放在方法主体之外。 class 级别的声明只能包含方法、构造函数和字段,以及一些块(即 init),不能包含 if 语句和对已定义变量的调用。

此外,您使用的 Java 语法根本无法编译。请改用 Kotlin 语法并将其移动到伴随对象内的 init 块。

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
        }
    }
}