我刚开始学习 Kotlin,之前是 C# 出身。我在尝试使用类型和其他一些东西。我正在尝试创建一个名为“WalMartGreeters”的静态类,它可以将问候者添加到列表中,然后调用一个简单的静态函数来显示这些问候者。我的方法需要一个字符串参数/字符串列表来添加到可变字符串列表中,但是当我尝试向其中添加值时,我会得到一个预编译错误,提示“期望 String.Companion”,而实际上得到的是“String”。我试图将其更改为将 String 强制转换为 String.Companion,但是它会提示强制转换不合法。
我经常遇到的错误是:Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to kotlin.jvm.internal.StringCompanionObject
我经常遇到的错误是:Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to 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(String)
替换为prntList = mutableListOf<String>()
,您使用了MutableList<StringCompanionObject>
而不是MutableList<String>
来初始化prntList
。 - holi-javaprntList.add(strNameToAdd)
报告了编译错误。你使用的是哪个编辑器? - holi-java<>
内或在:
后使用String
时,表示类型。当作为可调用函数时,String
表示构造函数。当作为值时,String
表示伴生对象,其中包含静态方法,例如String.format()
。mutableListOf(String)
表示一个列表,其中只有一个元素,即(单例)String
伴生对象,它实际上不是String
。mutableListOf<String>()
表示一个空的可变列表,其元素类型为String
。 - ephemient