2016-09-10 4 views
0

Ich bin neu in Scala, von einem Anfänger Java-Hintergrund, so bitte bitte mit mir.Scala: Klasse Typ Parameter erweitert abstrakte Unterklasse

Ich habe eine Klasse, Arbitrage, mit einer abstrakten Unterklasse Builder. Ich möchte, dass der Tybyparameter von Arbitrage die abstrakte Unterklasse erweitert.

Ex:

abstract class Arbitrage[T <: Builder[T]] { 
    // lots of code 
    abstract class Builder[T]{ 
     // build pattern code 
    } 
} 

Dies gilt jedoch nicht kompilieren, und IntelliJ sagt mir, dass es Builder „Can not Symbol auflösen "" Wenn ich die Klasse Signatur

class Arbitrage[T <: Ordered[T]] 

ändern dann kompiliert. , so bin ich ziemlich sicher, dass es mit Sicht ein Problem ist.

Grüße

+1

Was versuchen Sie damit? –

+0

@ m-z In Ordnung, also die abstrakte Klasse Arbitrage, und seine Unterklasse Builder sind ein Format für eine Vielzahl von Klassen, die Arbitrage erweitern. nennen wir sie SpacialArbitrage, MergerAribitrage und BondArbitrage. Sie alle werden Arbitrage erweitern und ihre jeweiligen Erbauer werden Arbitrages Erbauer erweitern, also sind sie einfacher zu schreiben. Die "Builder" folgen, wie Sie vielleicht vermuten, dem Java Builder-Muster. – sudom82

Antwort

0

I löste mein Problem:

Ich verwendete Java-Syntax für den Zugriff auf Unterklassen, z. B. Arbitrage.Builder, was ich brauchte Arbitrage # Builder, das ist die Scala-Syntax.

+0

übrigens heißt es innere Klasse, anstatt Unterklasse (zumindest in Scala) – Qingwei

Verwandte Themen