我不能在Kotlin中实现这个java接口。
import org.springframework.core.convert.converter.Converter
import org.springframework.stereotype.Component
@Component
class FeatureFlagConverter : Converter<String?, FeatureFlags> {
override fun convert(source: String?): FeatureFlags = FeatureFlags(source ?: "")
}
调试器失败,并出现以下情况:
类'Bulletin'不是抽象的,并且不实现抽象成员public abstract fun convert(源代码:String):String在org.springframework.core.convert.converter.Converter中定义
**为什么?**接口是纯java接口(https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/converter/Converter.java),所以convert
方法中的source
参数可能为null,并且没有任何符号提示它不为null。
- 它有助于删除String周围的空值。但我不想这样做,因为它是Java接口,
convert
方法中的source
参数可能为null。一些java调用者可能会在这里传递null。
1条答案
按热度按时间sxpgvts31#
您链接的方法的文档说:
source要转换的源对象,必须是
S
的示例(永远不能是null
)所以
S
必须是不可空的。Kotlin似乎“知道”参数必须是不可空的原因可能是来自空性注解。Kotlin支持几种Java空性注解。Spring的nullability annotations是使用JSR-305进行元注解的,因此它们是受支持的。
虽然这个方法没有将
source
标记为@NonNull
,但我认为整个包都被标记为默认的here。