我正在将Java中的一些类转换为kotlin,当试图从接口继承时,我遇到了编译错误:
平台声明冲突:以下声明具有相同的JVM签名(getContentID()ljava/lang/string;):
interface Media {
val contentId: String
val displayRunTime: String
val genres: List<String>
val programId: String
val runTime: String
val type: String
}
下面是课程:
class Airing : Media {
override val contentId: String? = null
override val displayRunTime: String? = null
override val genres: List<String>? = null
override val programId: String? = null
override val runTime: String? = null
override val type: String? = null
override fun getContentId(): String? {
return contentId
}
我对Kotlin来说是超级新的。
您不需要声明override fun getContentId():string?
,因为media
接口中的val contentId:string
已经被override val contentId:string?
重写。
您得到的错误意味着您在JVM字节码中声明的函数与已经为ContentID
属性生成的getter发生冲突(getter具有相同的签名)。
在Kotlin中,您应该直接使用contentID
属性,而在Java中,您可以使用生成的访问器getcontentID()
和setcontentID(...)
。
另外,Kotlin不允许您使用可为空的字符串
属性重写not-null字符串?
属性,因为基接口的用户希望该属性提供not-null值。您应该用string
替换重写的属性类型,或者在接口中将它们设置为string?
。
我正在将Java中的一些类转换为kotlin,当试图从接口继承时,我遇到了编译错误: 平台声明冲突:以下声明具有相同的JVM签名(getContentID()ljava/lang/string;): 我对Kotlin来说是超级新的。
fun setCollection(collection:(Mutable)Collection !):KotlinClass中定义的单元 无论我做什么,都没有办法只用Kotlin代码来编译它。 再现情况的代码: Java本身就不存在这个问题。所以我猜测这可能与平台类型有关(不是)。 有没有一个优雅的解决方案来解决这个问题,最好不需要编写Java代码?还是应该在Kotlin编译器中解决这个问题?
我有一个简单的枚举类,我想在其中有一个名为name的字段。 不幸的是,这在静态编程语言中似乎不起作用。编译失败,消息: 错误:(9,5)静态编程语言:冲突声明:枚举条目名称,公共最终val名称:字符串 同样的Enum类作为Java代码工作正常。如何用静态编程语言解决这个问题?
NEI 目前已经发布了接口测试的功能,方便开发人员在本地测试接口。 接口测试入口 在左侧导航栏进入接口测试。 测试单个接口 选择好项目组和项目,在下方选择待测的接口,进入用例配置界面。 在用例配置界面可以配置项目的服务器环境。 也可以在接口列表上方选择项目的服务器环境。 在下方填入测试用例的请求数据。 其中,路径参数,请求数据NEI已自动随机生成相应的数据,你可以根据自己的需要进行修改,注意生成的
接口方式 1.我们提供两种接口方式API方式和DLL动态库,两种对接方式都可以完成对接。 2.API接口方式使用http协议,GET或POST方式提交和接收数据,数据交换格式为JSON 3.DLL接口方式使用DLL动态库调用,支持JSON,INI,XML三种文件格式进件数据交换 4.DLL接口优点: a.接入的难度DLL方式低于API方式, b.DLL调用方式也能实现全部的接口协议, c.DLL接
我们提供两种接口方式API方式和DLL动态库,两种对接方式都可以完成对接。API 接口方式使用http协议,GET或POST方式提交和接收数据,数据交换格式为 JSON。