小编Zol*_*ázs的帖子

具有上限的内部类

我想创建一个带有类型参数的泛型类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)

generics scala scala-2.9

0
推荐指数
1
解决办法
93
查看次数

标签 统计

generics ×1

scala ×1

scala-2.9 ×1