繁体   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