【发布时间】:2017-06-30 05:46:44
【问题描述】:
所以我有下面的代码,用 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)
}
}
}
非常感谢!
【问题讨论】:
标签: java kotlin kotlin-interop