我正在尝试将一堆 Strings 转换为通用 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]) {}
当我尝试用 data 初始化我的新泛型类时:
val generic = new LinkedStackGeneric
generic.push("test")
我收到此语法错误:
type mismatch; found : String("test") required: Nothing
我究竟做错了什么 ?由于我使用的是类型参数,我是否应该无法将包括 String 在内的任何类型的数据添加到方法 'push' 中?