3
私は以下の問題を抱えています。多分誰かが私を助けてくれるかもしれません(または私の間違いがどこにあるのかを説明してください) です。与えられた特性とクラスです:ネイティブJavaクラスの型の問題
class ScalaTextUser extends TextAttr[ScalaText] {
override val obj = new ScalaText
}
大丈夫です。今、私はそれらの両方を使用して新しいクラスを作成
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
}
。しかし、クラス org.eclipse.swt.widgets.Text(またはその他の純粋なJavaクラス)でそのようなものを作成したい場合は、エラーが発生します。ここでは、コード:
class SwtTextUser(parent:Composite) extends TextAttr[Text] {
override val obj = new Text(parent, 0)
}
そして、これは誤りです:AnyRef:
型引数は、[org.eclipse.swt.widgets.Text] TextAttrのタイプ パラメータ範囲[T <を形質に準拠していません。 {def setText(String):ユニット; def getText:String}]
アイデアはありますか?
ありがとう、クリス。
ただチェックしますが、ScalaのStringはjava.lang.Stringと同じですか? –