scala 泛型转换 A[T] => B[T]

scala generic conversion A[T] => B[T]

我正在尝试使用泛型来避免丢失实现的子类型。 虽然我相信它有一个名字,但我并不完全清楚如何搜索这个问题。 我有一个名为 conf 的特征和一些实现(其中 WB 是 Params 的一个实例):

trait Conf[P <: Params]

class ConfInstance extends Conf[WB]

现在我希望后端可以将此类型参数转换为不同的 class,如下所示:

trait Coder[P <: Params]
class AABBCC(conf: Conf[WB]) extends Coder[WB]

def backend[P <: Params](conf: Conf[P]): Coder[P] = {
    conf match {
        case abcConf: ConfInstance => new AABBCC(abcConf)
    }

但编译器抱怨:"Expression of type AABBCC" 不符合预期类型 Coder[P]"

我尝试添加一个 asInstanceOf[Coder[P]],但我不喜欢这个解决方案。

那么进行这种转换的正确方法是什么?

似乎是 IDE 问题(是 IntelliJ IDEA 吗?)。

IDE 错误地报告编译错误,但代码编译通过。

.