Scala 大小写类。使用上限值复制

Scala 大小写类。使用上限值复制,scala,generics,Scala,Generics,我在使用具有上限值的case类的.copy方法时遇到问题。例如: sealed abstract class SomeOtherClass[A <: SomethingElse]{...} final case class SomeClass[LI <: SomeOtherClass[_]]( value1: String, value2: LI) 但当我尝试运行我的代码时,会出现一个错误,大意如下: type mismatch; [error] found

我在使用具有上限值的case类的
.copy
方法时遇到问题。例如:

sealed abstract class SomeOtherClass[A <: SomethingElse]{...}

final case class SomeClass[LI <: SomeOtherClass[_]](
    value1: String,
    value2: LI)
但当我尝试运行我的代码时,会出现一个错误,大意如下:

type mismatch;
[error]  found   : List[_$2]
[error]  required: List[LI]

问题是,有没有一种方法可以将
.copy
方法用于类似的情况?或者,推荐的方法是什么?

尝试像这样限定存在类型

val instance: SomeClass[_ <: SomeOtherClass[_]] = service.getInstance()

val实例:SomeClass[\p>尝试像这样限定存在类型

val instance: SomeClass[_ <: SomeOtherClass[_]] = service.getInstance()

val实例:SomeClass[;我无法复制这个…什么版本的Scala?@LeviRamsey 2.12.10我无法复制这个…什么版本的Scala?@LeviRamsey 2.12.10奇怪的是需要边界。它应该由case类SomeClass的定义暗示?奇怪的是需要边界。它应该由case类S的定义暗示但是你有课吗?
trait Animal
case class Cat() extends Animal
case class Dog() extends Animal

sealed abstract class House[A <: Animal](a: A)
case class DogHouse(dog: Dog) extends House(dog)
case class CatHouse(cat: Cat) extends House(cat)

final case class SomeClass[LI <: House[_]](value1: String, value2: LI)

val instance: SomeClass[_ <: House[_]] = SomeClass("Floppy", DogHouse(Dog()))
instance.copy(value1 = "Something new") // res0: SomeClass[_$2] = SomeClass(Something new,DogHouse(Dog()))