为引用类型传递null时Scala 2.7.x类型不匹配错误

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的回答之前,我没有意识到原始问题中的含糊不清.

Aar*_*rup 7

显然,在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)