У меня следующая проблема, может быть, кто-то может мне помочь (или объяснить, где моя ошибка
является). Даны черта и класс:
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
}
Теперь я создаю новый класс, используя оба из них:
class ScalaTextUser extends TextAttr[ScalaText] {
override val obj = new ScalaText
}
Все в порядке. Но если я хочу создать что-то подобное с классом
org.eclipse.swt.widgets.Text (или любой другой чистый класс Java) Я получаю ошибку. Вот код:
class SwtTextUser(parent:Composite) extends TextAttr[Text] {
override val obj = new Text(parent, 0)
}
И это ошибка:
аргументы типа [org.eclipse.swt.widgets.Text] не соответствуют типу свойства TextAttr
границы параметров [T <: AnyRef {def setText (String): Unit; def getText: String}] </em>
У кого-нибудь есть идея?
Спасибо, Крис.