所以我是新来的学习Kotlin,来自C#背景。我一直在搞类型和其他一些事情。我正在尝试创建一个“WalMartGreeters”的静态类,它可以将欢迎者添加到列表中,然后调用一个简单的静态函数来显示它们。我的方法需要一个字符串参数/字符串列表添加到可变字符串列表,但是当我试图给它添加值时。我得到一个预编译错误,说“期望String.Companion”“得到了字符串”我试图改变它将字符串转换为String.Companion,然后它说转换是非法的。Kotlin Cast String as String.Companion
中主要的错误,我得到的是:异常在线程“主要” java.lang.ClassCastException:java.lang.String中不能转换到kotlin.jvm.internal.StringCompanionObject
fun main(args:Array<String>) {
walMartGreeter.addTo("Jean")
walMartGreeter.addTo("Dale")
walMartGreeter.addTo("Phil")
walMartGreeter.addTo("Chris")
walMartGreeter.listTheWholeFam()
}
class walMartGreeter(val strName:String) {
companion object classList {
var prntList = mutableListOf(String)
fun addTo(strNameToAdd:String) {
prntList.add(strNameToAdd)
}
fun addTo(listOfNames:List<String>) {
for (item in listOfNames) {
prntList.add(item)
}
}
fun listTheWholeFam() {
//println("All I do is $strName")
for(item in prntList) {
println("Hello, $item!")
}
//println("type of mutList: ${mutList.ToString()}")
if(prntList is MutableList) {
println("Yeah, it's a mutableList");
}
}
}
}
:),用'prntList = mutableListOf()'替换'prntList = mutableListOf(String)',你用'MutableList '初始化'prntList',而不是'MutableList '。 –
这样做,但为什么?为什么我能够将它初始化为mutableListOf(String)而没有语法错误?为什么默认情况下将MutableList(String)转换为... String.Companion?那是因为它在一个伴侣对象中吗? – JoeyG2677
不,编译错误报告为'prntList.add(strNameToAdd)'。你正在使用什么编辑器? –