我怎样才能防止一个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
类型。