null 很难定义是什么?
首先它肯定不是基本类型,因为
int a = null;
这样的表达式是不能编译通过的。
虽然
Object foo = null;
可以轻松通过编译,但不能证明null是某个引用类型的实例
因为我们找不到任何对象类型,即使基本类型,也可以得到类型,甚至void也是。
但jdk中找不到任何类型可以说明null是什么。
null有个很明显的特征,可以赋值给任何类型的引用,看起来好像,null可以是一个任意引用类型的实例
但jdk中不存在一个类型是任意引用类型的子类型。
null之所以创造出来是为了让引用有个默认值,基本类型,可以默认为0,false,等,引用类型呢?只能创造出这么一个怪异的null,作为引用的初始值,就像0。
对象初始状态是无,这个状态被表达为null。
所以其实null是一个无奈产物。但我想它并不是表达某个事物是否存在,
那才是guava的optional设计的初衷


被折叠的 条评论
为什么被折叠?



