我想创建一个带有类型参数的泛型类T,然后创建一个包含值类型的内部类的实例T.我认为,如果我使用上限告诉T必须是例如的子类型.String,我将能够创建用a初始化的内部类的实例String.
class Test[T <: String] {
private class TestEntry(val value: T)
def init: Unit = {
new TestEntry("")
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
<console>:12: error: type mismatch;
found : java.lang.String("")
required: T
new TestEntry("")
^
Run Code Online (Sandbox Code Playgroud)
实际上,为了我的目的,它会省略上限和调用new TestEntry(null),但编译器甚至不接受null.
我错过了什么?
编辑:
让我重新说一下我的例子,我需要这样的东西:我应该能够用任何特定的汽车测试抽象的豪华汽车服务,而无需重新实施测试方法.因此,抽象类(或特征)和方法都应该适用于豪华汽车的子类.
class Car
class LuxuryCar extends Car
class Mercedes extends LuxuryCar
class Ferrari extends LuxuryCar
trait LuxuryCarService[CarType <: LuxuryCar] {
def testWithCar(car: CarType): Unit = {}
def testWithARandomLuxuryCar: Unit …Run Code Online (Sandbox Code Playgroud)