它是""(空字符串)。:“在某个分支,s没有被初始化。Java来说,这相对方便一些。看成是一个“union类型”。MyException}。:尽量不要产生null指针。基本上可以当成union类型来用。null一样,漏掉这种情况。try...catch。很多人写的函数,返回null来表示“出错了”,这其实是对null的误用。”,应该使用异常,而不是null。NullPointerException。所以null不应该被放进Array,List,Set等结构,不应该出现在Map的key或者value里面。真正合法的对象,用来表示“没有”。:明确理解null所表示的意义,尽早检查和处理null返回值,减少它的传播。null做出“有意义”的处理。}}当看到find()返回了null,foo自己也返回null。就在于人们对于null的“容忍态度”。Objects.requireNonNull()。@NotNull和@Nullable标记。NullPointerException的地方。使用Optional类型。”null的情况下,“访问”对象的成员。content)}你从find()函数得到一个Optional类型的值found。content));这段Java代码跟上面的Swift代码等价,它包含一个“判断”和一个“取值”操作。ifPresent先判断found是否有值(相当于判断是不是null)。”到lambda表达式的content参数(unwrap操作),然后执行lambda里面的内容,否则如果found没有内容,那么ifPresent里面的lambda不执行。“Consumer”,它表示“如果found不是null,拿到它的值,然后应该做什么”。lambda返回,而且由于那个lambda(Consumer.accept)的返回类型必须是void,编译器会报错,说你返回了String。仿佛用了Optional之后,这语言就不再是Java了一样。found里面的内容。found.isPresent(),直接进行found.get(),就会出现NoSuchElementException。