String のスタックをジェネリック Stack に変換しようとしています。
これが文字列実装のスタックです:
class LinkedStackOfStrings {
var first : Node = _
def isEmpty : Boolean = {
first == null
}
def push(itemName : String) = {
val oldFirst = first
first = new Node(itemName , oldFirst)
}
def pop = {
first = first.next
first.itemName
}
}
class Node(val itemName : String , val next : Node) {}
これがジェネリック型のスタックの実装です:
class LinkedStackGeneric[T] {
var first : NodeGeneric[T] = _
def isEmpty : Boolean = {
first == null
}
def push(itemName : T) = {
val oldFirst = first
first = new NodeGeneric(itemName , oldFirst)
}
def pop = {
first = first.next
first.itemName
}
}
class NodeGeneric[T](val itemName : T , val next : NodeGeneric[T]) {}
新しいジェネリック クラスをデータで初期化しようとすると、次のようになります。
val generic = new LinkedStackGeneric
generic.push("test")
次の構文エラーが表示されます。
type mismatch; found : String("test") required: Nothing
私は何を間違っていますか?型パラメーターを使用しているため、String を含む任意の型のデータをメソッド 'push' に追加することはできませんか?