我怎样才能防止一个Scala函数接收'null'作为参数

我有这个签名的Scala方法:

def m (map: Map [String, _]) 

我想Map是一个引用类型,因此,我可以调用m传递null

  m (null) // Allowed call 

有没有办法让编译器不允许null是一些方法调用? 像Kotlin这样的其他语言可以明确地说明一个参数可以为null: http : //kotlinlang.org/docs/reference/null-safety.html

在Scala中有这样的东西吗?

编辑:谢谢你的意见。 我知道'空'引用是一个运行时间的问题,但其他语言与其他类型的系统在编译时考虑到这一点。

我只想知道在Scala中是否还有一种方法(我正在开始使用该语言)。 检查评论,答案和斯卡拉类型层次我客人这是不可能的。

对于值对象(像不可变集合和大小写类),避免'null'是有意义的(但是它们扩展了AnyRef )。

我可以尝试避免'空',但是例如,如果找不到键,Map.get返回'null',所以我必须处理这个。

关于Map[String, _]它是一个异构的映射,把它想象成一个JSON对象。 我可以用另一种更像Scala的方式处理这个问题吗?

谢谢!

根据JVM的定义,任何引用类型( AnyRef )都可以为null ,编译器不能强制客户端没有用null调用你的函数。

强烈建议在使用Scala时不要使用null值。 如果您需要处理缺少的值,请改用Option类型。