加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为引用类型传递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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读