Scala中的null引用如何对齐?

时间:2015-12-30 02:56:49

标签: scala nullpointerexception null nullable

Liskov替代原则: B是A的子类型,如果任何人可以用A做一个人可以用B做。 那么为什么Null是Scala中所有类的子类型,即使按照上面的定义它也不是任何类的子类型?无法将Null定义为实现所有可能的方法,每个方法都返回null? Null在Scala中的定义方式是什么原因?

2 个答案:

答案 0 :(得分:8)

NVM在JVM上几乎是不可避免的。引用可以为null。斯卡拉无法阻止它。

所有Scala都将Java的null包含在统一类型系统中。它存在于Java互操作系统中,仅此而已。 Java中的Null是错的,在Scala中也是错误的。

是的,空引用是最终的LSP违规。不,没有办法解决这个问题。评估null为ImageView而不是抛出final EditText txtPrice = new EditText(getContext()); txtPrice.setKeyListener(DigitsKeyListener.getInstance(false, false)); txtPrice.setFilters(new InputFilter[] { new InputFilter.LengthFilter(3) }); 的方法调用不会更正或更不正确,只是同样荒谬。

这里真的没什么好看的。在null中包裹任何可以为空的东西,忘记这个不正确的黑暗坑,继续前进。

答案 1 :(得分:1)

  

无法将Null定义为实现所有可能的方法,每个方法都返回null?

没有。返回原始类型的方法不能返回null; 2. Scala null的唯一原因是因为JVM拥有它;并且JVM null不会以这种方式运行。这需要在每个方法调用之前基本上添加if,除非编译器证明接收器不是空的,它通常可以'吨。