我想创建一个带有 type 参数的泛型类T
,然后创建一个包含 type 值的内部类的实例T
。我认为如果我使用上限来判断它T
必须是例如的子类型。String
,我将能够创建用 . 初始化的内部类的实例String
。
class Test[T <: String] {
private class TestEntry(val value: T)
def init: Unit = {
new TestEntry("")
}
}
但我收到以下错误:
<console>:12: error: type mismatch;
found : java.lang.String("")
required: T
new TestEntry("")
^
实际上,出于我的目的,可以省略上限和 call 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 = test(new Mercedes)
def testWithNoCar: Unit = test(null)
}
trait MercedesCarService extends LuxuryCarService[Mercedes]