Liskov替换原则:B是A的子类型,如果任何人可以用A做一个人可以用B做什么.那么为什么Null是Scala中所有类的子类型,即使通过上面的定义它不是任何类的子类型?无法将Null定义为实现所有可能的方法,每个方法都返回null?Null在Scala中的定义方式是什么原因?
NVM在JVM上几乎是不可避免的.引用可以为null.斯卡拉无法阻止这一点.
所有Scala都将Java的null包含在统一类型系统中.它存在于Java互操作中,仅此而已.Java在Java中是错误的,在Scala中也是错误的.
是的,空引用是最终的LSP违规.不,没有办法解决这个问题.评估null上的方法调用null
而不是抛出NullPointerException
不会更正或更不正确,只是同样荒谬.
这里真的没什么好看的.把任何可以入侵的东西包裹起来Option(...)
,忘掉这个不正确的黑暗坑,然后继续前进.