siehe Objekttyp in Objektdefinition

Hinweis: Das erste Beispiel funktioniert. Es zeigt, was ich bekommen möchte. Das zweite Beispiel zeigt, dass ich es ohne Boilerplate deklarieren möchte, es aber nicht getan habe.

Ich möchte nur eine einfache Sache bekommen:

trait SelfTest[T <: SelfTest[T]] {_ : T =>
  def get : T = this
}
class Test extends SelfTest[Test]
object Test extends Test

aber ohne Boilerplate-Klassendefinition. Etwas wie das:

trait SelfTest[T <: SelfTest[T]] {_ : T =>
  def get : T = this
}
object Test extends SelfTest[Test.type]

Aber dieser Weg wird von scala abgelehnt (illegal cyclic reference involving object Test). Gibt es irgendeine Art von Magie?# Zeichen, um das erstellte Objekt zu kennzeichnen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage