从终端传递参数时Kotlin类型不匹配错误

当我试图学习kotlin的语法时,发现类型不匹配错误。 文件test1.kt如下:

fun main(args: Array<String>){ println(maxOf(args[0], args[1])) println(maxOf2(args[0], args[1])) } fun maxOf(a: Int, b: Int): Int{ return if (a>b) a else b } fun maxOf2(a: Int, b: Int): Int = if (a>b) a else b 

我通过在终端上键入命令编译程序。

 kotlinc test1.kt -include-runtime -d test1.jar 

并且错误消息显示:

 test1.kt:3:18: error: type mismatch: inferred type is String but Int was expected println(maxOf2(args[0], args[1])) ^ test1.kt:3:27: error: type mismatch: inferred type is String but Int was expected println(maxOf2(args[0], args[1])) ^ 

问题可以通过替换来解决

 println(maxOf2(args[0], args[1])) 

 println(maxOf2(args[0].toInt(), args[1].toInt())) 

我的问题是为什么错误只发生在函数“maxOf2”?

这是因为有另一个maxOf来获取Comparable的最大值,而String 是-A Comparable

 fun <T : Comparable<T>> maxOf(a: T, b: T): T