gpt4 book ai didi

android - 将 Kotlin 的 @JvmOverloads 与 Android 的 Fragment.newInstance() 模式结合使用

转载 作者:行者123 更新时间:2023-11-29 16:48:28 27 4
gpt4 key购买 nike

我试图通过将两者都定义为顶级乐趣和伴随对象静态乐趣来实现这一点,但我得到了相同的结果。我能够看到生成的方法,但没有用于 newInstance(mouse: Mouse?) 的方法,我对如何从 Java 调用它有什么误解?

// MyFragment.kt
@JvmOverloads
fun newInstance(bird: Bird? = null, bee: Bee? = null, cat: Int? = -1, mouse: Mouse? = null) : MyFragment {
//Put params in Bundle, put bundle in fragment...
return MyFragment()
}

// MyActivity.java
MyFragment fragment = MyFragmentKt.newInstance(bird, bee, cat); // compiles
MyFragment fragment = MyFragmentKt.newInstance(mouse); // does not compile

最佳答案

@JvmOverloads注释使编译器通过省略结束参数来生成所有方法。它不会为参数的所有排列生成方法。

If a method has N parameters and M of which have default values, M overloads are generated: the first one takes N-1 parameters (all but the last one that takes a default value), the second takes N-2 parameters, and so on.

因此 MyFragmentKt.newInstance(bird) 将存在,而 MyFragmentKt.newInstance(mouse) 甚至 MyFragmentKt.newInstance(bee) 获胜'存在。

关于android - 将 Kotlin 的 @JvmOverloads 与 Android 的 Fragment.newInstance() 模式结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com