Kotlin:重载解析歧义

sre*_* cr 7 java android kotlin android-studio

错误截图尝试执行以下代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译失败Test().list.contains(1)并显示消息:

任务 :app:compileDebugKotlin FAILED e: /Users/sreejithcr/Documents/MyApplication/app/src/main/java/com/wxample/myapplication/MainActivity.kt: (13, 31): 重载解析歧义: public open fun contains( @Nullable 元素: Int!): Boolean 定义在 java.util.ArrayList public open fun contains(@Nullable element: Int!): Boolean 定义在 java.util.ArrayList

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

梯度配置:

ext.kotlin_version = '1.3.41'

类路径 'com.android.tools.build:gradle:3.4.2'

Lec*_*agy -2

当我阅读你的代码时,我注意到一些冲突:

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

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

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

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

  • 这只是一个片段。这里的所有建议都不能解决我面临的问题。 (2认同)