Convierta la firma Java `sort` con`? super T` a Scala (genéricos)

El problema:

Mirando aesta pregunta sobre la migración de la firma Java

public <A extends Comparable<? super A>> void sort(List<A> list) { }

a Scala, no parece haber una manera de evitar un

illegal cyclic reference involving type T

error si haces una traducción literal como esta.

def compilerFailure[T <: Comparable[_ >: T]](a: Array[T]): T = { }

La solución parece ser hacer esto

def workaround[A <: Comparable[U], U >: A](list: List[A]) { }

que si realiza un viaje de ida y vuelta desde el código de bytes a Java, obtiene esto (que pierde elsuper parte)

public <T extends Comparable<U>, U> void scalaToJava(List<U> a) { }

Mis preguntas:

Es elscalaToJava versión equivalente a la siguiente?

public <T extends Comparable<?>> void sort(List<T> a) {

Pensé cuandoU es ilimitado, bien podría ser? oObject ¿No? Entonces, si ese es el caso, es el Scalaworkaround versión equivalente a

def sort[A <: Comparable[_]](list: List[A]) { }

Todos parecen compilarse para mi caso de uso (que consiste en poner diferentes subtipos en una colección y poder ordenarlos).NÓTESE BIEN. Tengo curiosidad acerca de la mecánica y qué causa el error de referencia cíclico y me doy cuenta de que Scala ofrece mejores alternativas en términos de covarianza, etc.Ordering)

Respuestas a la pregunta(1)

Su respuesta a la pregunta