相关疑难解决方法(0)

意外覆盖:以下声明具有相同的JVM签名

我在Kotlin中遇到了这个错误:

class GitHubRepoAdapter(private val context: Context,
    private val values: List<GithubRepo>) : ArrayAdapter<GithubRepo>(context, R.layout.list_item,
    values) {
Run Code Online (Sandbox Code Playgroud)

私有val上下文:上下文

在日志中它说:

错误:(14,25)意外覆盖:以下声明具有相同的JVM签名(getContext()Landroid/content/Context;):fun():Context fun getContext():Context!

我无法看到导致问题的原因.

kotlin kotlin-extension kotlin-android-extensions

46
推荐指数
4
解决办法
2万
查看次数

Kotlin数据类实现Java接口

我正在尝试将Kotlin引入我当前的项目中.我决定从实体开始,这些实体似乎完美地映射到数据类.例如,我有一个数据类:

data class Video(val id: Long, val ownerId: Long, val title: String, val description: String? = null,
             val imgLink: String? = null, val created: Date? = null, val accessKey: String? = null,
             val views: Long? = null, val comments: Long? = null, val videoLink: String? = null): Entity
Run Code Online (Sandbox Code Playgroud)

其中实现了Java接口:

public interface Entity {
   Long getId();  
}
Run Code Online (Sandbox Code Playgroud)

但由于某些原因,编译器不理解该方法已经实现:

类'Video'必须声明为abstract或实现抽象成员public abstract fun getId():kotlin.Long!在net.alfad.data.Entity中定义

我是否必须为id param使用任何其他关键字?什么"!" 签名意味着什么?

java overriding kotlin data-class

27
推荐指数
1
解决办法
8330
查看次数

Kotlin接口java类:意外覆盖

我有一个类似的第三方java库

public class ThirdParty  {
    public String getX() {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在kotlin中也有一个界面

interface XProvider {
    val x: String?
}
Run Code Online (Sandbox Code Playgroud)

现在我想扩展ThirdParty类并实现XProvider接口.这在我的遗留Java代码中运行良好:

public class JavaChild extends ThirdParty implements XProvider {}
Run Code Online (Sandbox Code Playgroud)

但是,我想写尽可能多的kotlin并尝试将我的java类转换为kotlin.可悲的是,以下不起作用:

class KotlinChild: ThirdParty(), XProvider
Run Code Online (Sandbox Code Playgroud)

错误是

class 'KotlinChild1' must be declared abstract or implement abstract member public abstract val x: String? defined in XProvider
Run Code Online (Sandbox Code Playgroud)

但是,如果我做的话

class KotlinChild1: ThirdParty(), XProvider {
    override val x: String? = null
}
Run Code Online (Sandbox Code Playgroud)

我明白了

error: accidental override: The following declarations have the …
Run Code Online (Sandbox Code Playgroud)

java kotlin

10
推荐指数
1
解决办法
1254
查看次数