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'
答案 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);