簡體   English   中英

新的Scala類與另一個類作為參數遇到“類型不匹配”錯誤?

[英]New a scala class with another class as param meet “type mismatch” error?

class base[T] () {
    def tell(t: T) { }
}

class test[T](a: T, b: base[T]){
    b.tell("sssssssssss")
}

val b = new base[String]()
val s:String = "12354555"
val t = new test[String](s, b)

我有兩個班級,一個是班級基礎 ,另一個是測試
測試有兩個參數。

運行代碼后,我得到了這樣的類型不匹配錯誤。

error: type mismatch;
 found   : String("sssssssssss")
 required: T
    b.tell("sssssssssss")
               ^
one error found

在我的代碼中,已經定義了String b類型,但是在類測試中b的類型是T。

在編譯時,類測試中的類型變量T不是String ,但是您嘗試使用String來調用它

兩種可能的解決方案:

a)設置參數T的下限

class test[T >: String](a: T, b: base[T]){
    b.tell("sssssssssss")
}

b)或更改參數表b的類型:

class test[T](a: T, b: base[String]){
    b.tell("sssssssssss")
}

在您提供的示例中,T是一個字符串,但不一定必須如此。 可能是任何東西。

無論如何,您都將一個字符串傳遞給b.tell(),但是b.tell()的參數類型不能保證是字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM