所以我是新來的學習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)'。你正在使用什麼編輯器? –