我有一个如下kotlin类:
open class E {
@JvmField var name:String = "kotlin eee"
}
一个java类,继承 E
public class SubE extends E{
public String name = “sub eee”
}
现在在kotlin 中有如下代码:
var subE = SubE()
println(subE.name) // 这行代码包如下错误
Overload resolution ambiguity. All these functions match.
public final var name: String! defined in com.java.invokefromkotlin.callkotlin.SubE
@JvmField public final var name: String defined in com.java.invokefromkotlin.callkotlin.SubE
但是如果java中调用就没有任何问题:
SubE subE = new SubE();
System.out.println(subE.name) // ok 没有任何问题
如果把kotlin E 换成是一个java类E,然后由SubE 继承:
public class E {
public String name = "java eee"
}
那么不管是在java中还是在kotlin中 访问SubE的 name 都ok
实在想不通为什么会这样。求大神们解惑