由于无效,无法在Kotlin中实现Java接口

gijlo24d  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(107)

我不能在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。
sxpgvts3

sxpgvts31#

您链接的方法的文档说:

source要转换的源对象,必须是S的示例(永远不能是null

所以S必须是不可空的。
Kotlin似乎“知道”参数必须是不可空的原因可能是来自空性注解。Kotlin支持几种Java空性注解。Spring的nullability annotations是使用JSR-305进行元注解的,因此它们是受支持的。
虽然这个方法没有将source标记为@NonNull,但我认为整个包都被标记为默认的here

相关问题