当间接引用时,为什么Kotlin const不被识别为编译时常量?

时间:2018-03-28 18:23:17

标签: android kotlin

说我有一个班级

@SomeAnnotation(someValue = A_CONST_VAL)
class SomeClass {
    companion object {
        const val A_CONST_VAL = "a constant value"
    }
    ...
}

以上编辑很好 - 没有问题。但是,如果我想在常量文件中使用A_CONST_VAL ...

import some.package.SomeClass.A_CONST_VAL

object SomeConstants {
    const val CONSTRUCTED_CONST_VAL = "some stuff ${A_CONST_VAL}"
}

并使用CONSTRUCTED_CONST_VAL作为编译时注释值,以便前一个类现在是

@SomeAnnotation(someValue = SomeConstants.CONSTRUCTED_CONST_VAL)
class SomeClass {
    companion object {
        const val A_CONST_VAL = "a constant value"
    }
    ...
}

编译器认为提供的注释值不是编译时常量。

是什么给出了?

注意:我也尝试将保存常量的文件实现为Java,只是为了查看它是否有用

class SomeConstants {
    public static final String CONSTRUCTED_CONST_VAL = "a constant value" + SomeClass.A_CONST_VAL;
}

仍然是编译失败

0 个答案:

没有答案