为引用类型传递null时Scala 2.7.x类型不匹配错误
发布时间:2020-12-16 19:12:39 所属栏目:安全 来源:网络整理
导读:以下 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
以下
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) 我完全清楚null的邪恶,但足以说我实际上需要这样做.这是编译器错误还是程序员错误? 编辑:只是为了澄清,T是一个类型参数而不是具体类型.在我更仔细地阅读Carl的回答之前,我没有意识到原始问题中的含糊不清. 解决方法
显然,在2.7中执行此操作的
correct way是:
class Key[T] class Entry[T](val k: Key[T],val v: T) def makeEntry[T >: Null] = new Entry(new Key[T],null) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |