Aar*_*rup 6 scala compiler-errors
以下Scala代码无法在Scala 2.7.7中编译,在最后一行中出现类型不匹配错误"found:Null(null)required:T":
/**
* @param [T] key type
*/
class Key[T]
class Entry[T](val k: Key[T], val v: T)
def makeEntry[T <: AnyRef] = new Entry[T](new Key[T], null)
Run Code Online (Sandbox Code Playgroud)
我完全清楚null的邪恶,但足以说我实际上需要这样做.这是编译器错误还是程序员错误?
编辑:只是为了澄清,T是一个类型参数而不是具体类型.在我更仔细地阅读Carl的回答之前,我没有意识到原始问题中的含糊不清.
显然,在2.7中执行此操作的正确方法是:
class Key[T]
class Entry[T](val k: Key[T], val v: T)
def makeEntry[T >: Null] = new Entry(new Key[T], null)
Run Code Online (Sandbox Code Playgroud)