Kotlin类types参数:不匹配未检测到
科特林代码:
class Inva{ fun x(y:T) {} } fun main(args: Array) { var inva = Inva() inva.x(“123”) }
Java相当于:
public class Vab { void x(T y) {} public static void main(String[] args) { Vab vab = new Vab(); vab.x("123"); } }
为什么Kotlin代码允许不变,而Java代码被正确标记为无效?
这些代码片段并不等同 ,因为Java代码片段使用类的types参数而不是声明自己的types。
一个可比较的Java方法声明就像这样(注意方法本身附加的
):
void x(T y) {}
随着这一变化,Java类将像Kotlin变体一样编译。
首先,您的main
签名是错误的,您应该使用Array
而不是Array
。
你的类有一个types参数T
,它是完全不用的。 嵌入式函数x
也有一个types参数T
,它与类types参数无关。 您可以更改function签名,如下所示:
class Inva{ fun x(y:T) {} }
现在您的电话会按预期失败: types不匹配 。