Kotlin:重载解析度不明确

时间:2019-08-08 09:51:46

标签: java android android-studio kotlin

Screenshot of the error尝试执行以下代码:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Test().list.contains(1)
    }
}

public class Test {

    ArrayList<Integer> list;

    public ArrayList<Integer> getList() {
        return list;
    }
}

,编译失败,消息为Test().list.contains(1)

  

任务:app:compileDebugKotlin失败   e:/Users/sreejithcr/Documents/MyApplication/app/src/main/java/com/wxample/myapplication/MainActivity.kt:(13,31):重载解析度模糊性:   public open fun contains(@Nullable element:Int!):在java.util.ArrayList中定义的布尔值   public open fun contains(@Nullable element:Int!):在java.util.ArrayList

中定义的布尔值

我了解的是编译器发现2个具有完全相同签名的contains(),不确定要调用哪个。

渐变配置:

ext.kotlin_version ='1.3.41'

classpath'com.android.tools.build:gradle:3.4.2'

2 个答案:

答案 0 :(得分:4)

这是Android Studios API 29 R2的问题

https://issuetracker.google.com/issues/139041608#comment3

转到“工具”->“ SDK管理器”->卸载Android 9. +,然后在Google回滚R2时再次安装它,以便您回到R1

答案 1 :(得分:0)

在阅读您的代码时,我发现了一些冲突:

首先,Test需要一个公共构造函数,该构造函数会创建ArrayList等。喜欢:

public Test(){ list = new ArrayList<>(); }

第二,将变量列表设为私有,仅应通过getter / setter授予访问权限。 第三,在方法onCreate()中尝试:

new Test().getList().contains(1);