所以我有下面的代码,用 Kotlin 编写。
return params.keys.containsAll(MANDATORY_PARAMS)
编译器说,我在最后一条指令行 ( ) 上遇到编译错误Unsolved reference: MANDATORY_PARAMS
,但我真的不明白为什么。
我认为伴随对象应该对他们“陪伴”的类的属性有某种可见性。
我能做些什么来解决这个问题?我怎样才能使两者及其伴侣对象MANDATORY_PARAMS
都可见?MandatoryParametersValidator
(免责声明:此代码正在从 Java 迁移到 Kotlin。在 Java 版本上,mandatoryParametersHaveBeenProvided
曾经是同一类的静态方法。)
import javax.validation.ConstraintValidator
import javax.validation.ConstraintValidatorContext
class MandatoryParametersValidator : ConstraintValidator<EnforceMandatoryParameters, Map<String, String>> {
val MANDATORY_PARAMS = arrayOf("bookingReference", "lastName")
override fun initialize(constraintAnnotation: EnforceMandatoryParameters?) {
// do nothing
}
override fun isValid(params: Map<String, String>, context: ConstraintValidatorContext?): Boolean {
MANDATORY_PARAMS
.filter { !params.containsKey(it) }
.forEach { parameterName ->
context?.disableDefaultConstraintViolation()
context?.buildConstraintViolationWithTemplate("Mandatory parameter $parameterName is missing.")?.addConstraintViolation()
}
return mandatoryParametersHaveBeenProvided(params)
}
companion object {
fun mandatoryParametersHaveBeenProvided(params: Map<String, String>) : Boolean {
return params.keys.containsAll(MANDATORY_PARAMS)
}
}
}
非常感谢!