Ich habe das folgende Problem, vielleicht kann mir jemand helfen (oder erklären, wo mein Fehler ist). Gegeben sind ein Merkmal und eine Klasse:Geben Sie Probleme mit Java-Klassen
trait TextAttr[T <: {def setText(s:String); def getText : String}] {
val obj : T
def txt_= (s:String) = obj.setText(s)
def txt = obj.getText
}
class ScalaText {
private var t = ""
def setText(s:String) = t = s
def getText = t
}
Jetzt erstelle ich eine neue Klasse mit beiden von ihnen:
class ScalaTextUser extends TextAttr[ScalaText] {
override val obj = new ScalaText
}
Das ist okay. Aber wenn ich so etwas mit der Klasse org.eclipse.swt.widgets.Text (oder einer anderen reinen Java-Klasse) erstellen möchte, bekomme ich einen Fehler. Hier ist der Code:
class SwtTextUser(parent:Composite) extends TextAttr[Text] {
override val obj = new Text(parent, 0)
}
Und das ist der Fehler:
Typ Argumente [org.eclipse.swt.widgets.Text] entsprechen nicht TextAttr den Typ Parametergrenzen [T < Merkmal: AnyRef {def setText (String): Einheit; def getText: String}]
Hat jemand eine Idee?
Danke, Chris.
Einfach überprüfen, aber ist die Zeichenfolge in Scala die gleiche wie java.lang.String? –