erwendung von Scala-Strukturtypen mit abstrakten Typ

Ich versuche, einen Strukturtyp zu definieren, der eine Sammlung mit der Methode "add" definiert (z. B. eine Java-Sammlung). Damit möchte ich einige Funktionen höherer Ordnung definieren, die für eine bestimmte Sammlung arbeite

object GenericTypes {
  type GenericCollection[T] = { def add(value: T): java.lang.Boolean}
}

import GenericTypes._
trait HigherOrderFunctions[T, CollectionType[X] <: GenericCollection[X]] {
    def map[V](fn: (T) => V): CollectionType[V]
    ....
}

class RichJList[T](list: List[T]) extends HigherOrderFunctions[T, java.util.List]

Dies kompiliert nicht mit dem folgenden Fehler

error: Parameter type in structural refinement may not refer to abstract type defined outside that same refinement 

Ich habe versucht, den Parameter in GenericCollection zu entfernen und in die Methode einzufügen:

object GenericTypes {
  type GenericCollection = { def add[T](value: T): java.lang.Boolean}
}
import GenericTypes._
trait HigherOrderFunctions[T, CollectionType[X] <: GenericCollection]

class RichJList[T](list: List[T]) extends HigherOrderFunctions[T, java.util.List]

aber ich bekomme einen anderen Fehler:

error: type arguments [T,java.util.List] do not conform to trait HigherOrderFunctions's type parameter bounds [T,CollectionType[X] <: org.scala_tools.javautils.j2s.GenericTypes.GenericCollection]

Kann mir jemand einen Rat geben, wie man strukturelle Typisierung mit abstrakten typisierten Parametern in Scala verwendet? Oder wie erreiche ich das, was ich erreichen möchte? Vielen Dank

Antworten auf die Frage(0)

Ihre Antwort auf die Frage