他在 2014 年的一篇文章中说过:“Null sucks.”1,意思是 null 很糟糕。他认为 null 是一种不明确的表示,它既可以表示一个值不存在,也可以表示一个值未知,也可以表示一个值无效。...虽然 null 引用可以用来表示一个值不存在或未知,也可以用来节省内存空间。但是它也不符合面向对象的思想,因为它不是一个对象,不能调用任何方法或属性。...如果我们不确定一个值是否为空,可以使用 Optional.ofNullable 方法,它会根据值是否为空,返回一个相应的 Optional 对象。...super T,Optional> mapper):如果 Optional 对象包含一个非空的值,对该值进行 mapper 参数操作,返回新的 Optional 对象,否则返回一个空的 Optional...or():这个方法可以让我们在 Optional 对象为空时,返回一个预设的值。
他在 2014 年的一篇文章中说过:“Null sucks.”1,意思是 null 很糟糕。他认为 null 是一种不明确的表示,它既可以表示一个值不存在,也可以表示一个值未知,也可以表示一个值无效。...虽然 null 引用可以用来表示一个值不存在或未知,也可以用来节省内存空间。但是它也不符合面向对象的思想,因为它不是一个对象,不能调用任何方法或属性。...Optional 类可以看作是一个容器,它可以包含一个非空的值,也可以为空。Optional 类提供了一些方法,让我们可以更方便地处理可能为空的值,而不需要显式地进行空值检查或者使用 null。...如果我们不确定一个值是否为空,可以使用 Optional.ofNullable 方法,它会根据值是否为空,返回一个相应的 Optional 对象。...super T,Optional> mapper) 如果 Optional 对象包含一个非空的值,对该值进行 mapper 参数操作,返回新的 Optional 对象,否则返回一个空的 Optional
在找db2 9.7fp11与fp4 jdbc驱动有什么区别的时候,反编译了一下官方驱动jar包,发现里面不少equals方法依然把未知变量放到了equals的左边,已知放到了右边,难道IBM程序员水平这么次么...equals 方法在非空对象引用上实现相等关系: 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。...Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true...注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。 参数: obj - 要与之比较的引用对象。...null导致的空指针异常,但是这么写并不能避免括号内变量引用某些方法或者属性导致的空指针,例如 String str=null; System.out.println("0".equals(
九、生成操作符 生成是指创建新的值序列。 1. Empty Empty操作符返回一个指定类型的空集合。这里的空不是null,而是元素数量为0的集合。...如果你使用了DefaultIfEmpty方法的重载方法DefaultIfEmpty(IEnumerable array),如果指定的array集合为空,那么将返回一个类型为T,值为null的单个对象...ToList ToList操作符可以在IEnumerable 类型的任何派生对象上调用,返回值为List类型的对象。 7....给定参数化类型 T 的一个变量 t,只有当 T 为引用类型时,语句 t = null 才有效;只有当 T 为数值类型而不是结构时,语句 t = 0 才能正常使用。...如果序列1为null,抛出异常。 如果序列2为null,抛出异常。 遍历序列1。在此过程中,如果序列2到达底端则返回false;如果序列1的当前值与序列2的当前值不同,则返回false。
特点 代码简洁:函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好:Java函数式编程使得编写并行程序如此简单,就是调用一下方法 流的操作过程为 流创建 => 中间操作...5); iterate方法接受两个参数,第一个为初始化值,第二个为进行的函数操作,因为iterator生成的流为无限流,通过limit方法对流进行了截断,只生成5个偶数 generator Stream... generateStream = Stream.generate(Math::random).limit(5); generate方法接受一个参数,方法参数类型为Supplier ,由它为流提供值...string.isEmpty()).collect(Collectors.toList()); map 接受一个函数作为参数。...()); distinct 返回一个元素各异(根据流所生成元素的hashCode和equals方法实现)的流 List numbers = Arrays.asList(1, 2, 1, 3, 3, 2,
(Collectors.toList()); map map方法根据传入的mapper函数对元素进行一对一映射, 即数据源中的每一个元素都会在结果中被替换(映射)为mapper函数的返回值....()); flatMap 与map不同flatMap进行多对一映射, 它要求若数据源的元素类型为R, 则mapper函数的返回值必须为Stream. flatMap会使用mapper函数将数据源中的元素一一映射为...()); peek peek方法会对数据源中所有元素进行给定操作, 但在结果中仍然是数据源中的元素....首先将数据源中的两个元素x1和x2传给accumulator得到r1, 然后将r1和x3传入得到r2....流可以在非线程安全的集合上创建, 流操作不应该对非线程安全的数据源产生任何副作用, 否则将发生java.util.ConcurrentModificationException异常.
一个Optional实例可能包含非null的引用(我们称之为引用存在present),也可能什么也不包括(称之为引用缺失absent)。它从不说包含的是null值,而是用存在或缺失 来表示。...=Optional.absent();//创建引用缺失的Optional实例,就是为NULL的 } 熟悉使用常见的方法: isPresent():如果Optional包含非null的引用(引用存在),返回...如同输入参数,方法的返回值也可能是null。...和其他人一样,你绝对很可能会忘记别人写的方法method(a,b)会返回一个null,就好像当你实现method(a,b)时,也很可能忘记输入参数a可以为null。...将方法的返回类型指定为Optional,方法的参数设置为Optional,也可以迫使调用者思考返回的引用缺失的情形。
()); flatMap 方法的相关函数接口和 map 方法的一样, 都是 Function 接口, 只是方法的返回值限定为 Stream 类型罢了。...Integer sum1 = Stream.of(1, 2, 3).reduce(0, (acc, e) -> acc + e); 上述执行求和操作,有两个参数: 传入 Stream 中初始值和 acc...总不能升级完 java8,第三方类库中的集合实现全都不能用了吧? 为此,java8 在接口中引入了"默认方法"的概念!默认方法是指接口中定义的包含方法体的方法,方法名有 default 关键字做前缀。...Java8 对为 null 的字段也引进了自己的处理,既不用一直用 if 判断对象是否为 null,来看看?...public static List getAssistant(Long tenantId) { // ofNullable 如果 value 为null,会构建一个空对象
很明显,在doDispatch()方法内有两处容易抛出异常,第一处在为Http请求寻找相匹配的Handler过程中,Handler是什么东东?...,一般可以归纳为两种:一种是执行Handler后抛出的异常,比如:业务逻辑层中未知的运行时异常和开发人员自定义的异常;另一种是还未开始执行Handler,而是在为其方法参数进行数据绑定时抛出的异常,比如...2 异常如何处理 无论是在获取Handler过程中、在为Handler的方法参数进行数据绑定过程中亦或在Handler执行过程中出现了异常,总是会先将该异常实例赋予dispatchException这一局部变量...构造方法的参数,后者会解析出含有@ExceptionHandler注解的异常处理方法,按照以Class<?...(value = Exception.class)标注的方法,但千万不要通过getMessage()将异常信息反馈给调用方,因为异常是未知的,可能会将很长串的异常堆栈信息暴漏出来,这样既不友好也不安全,
有没有好的方法或者工具可以追踪它发生的原因?...我们这样调用 doSomething() 方法: doSomething(null); 这就意味着 doSomething() 方法的参数 obj 为 null。...还有另外一种替代方法,判断 obj 是不是 null,如果是,就小心行事,做某些不会引起 NullPointerException 的事情;如果不是,就放心大胆地做该做的事情。...第一个“at 处”就是错误最初发生的位置。...title 为 null。
因此针对这个方法的分析需要分并行与非并行两个场景。 就是因为U和T不一样,所以给了我们更多的发挥。...r1或者r2为其返回值,甚至可以指定null为返回值。...由于Map中有Key和Value这两个值,故该方法与toSet、toList等的处理方式是不一样的。toMap最少应接受两个参数,一个用来生成key,另外一个用来生成value。...key ** 2、当value为null时,会抛出异常:java.lang.NullPointerException toMap(Function keyMapper,Function valueMapper...,采用三个参数的toMap进行改良 // java8处理思路:即 两个key相同时 只能有一个key存在,那对应的value如何处理?
指定为null,undefined,fun中的this指向window对象....如果param不传或为 null/undefined,则表示不需要传入任何参数. apply第二个参数为数组,数组内的值为传给fun的参数。...context === undefined) { // 指定为 null 和 undefined 的 this 值会自动指向全局对象(浏览器中为window) context...思路: 传递给函数的参数处理,不太一样,其他部分跟call一样。 apply接受第二个参数为类数组对象, 这里用了JavaScript权威指南中判断是否为类数组对象的方法。...{ context = window // 指定为 null 和 undefined 的 this 值会自动指向全局对象(浏览器中为window) } else {
),它是由什么原因导致的,有没有好的方法或者工具可以追踪它发生的原因?...我们这样调用 doSomething() 方法: doSomething(null); 这就意味着 doSomething() 方法的参数 obj 为 null。...还有另外一种替代方法,判断 obj 是不是 null,如果是,就小心行事,做某些不会引起 NullPointerException 的事情;如果不是,就放心大胆地做该做的事情。...第一个“at 处”就是错误最初发生的位置。...title 为 null。
特点只能有一个抽象方法,可以有参数和返回值。可以包含多个默认方法(使用 default 关键字)和静态方法(使用 static 关键字),不违反函数式接口的定义。...-> {// 省略参数表的类型 if (s1 == null) return -1; if (s2 == null)...());mapToInt() mapToLong() 等mapToInt() 方法用于将流中的元素映射为 int 类型的流。...mapToLong() 方法用于将流中的元素映射为 long 类型的流。...灵活性:reduce() 方法提供了灵活的参数选项,可以根据需求选择不同的重载形式,包括指定初始值、选择累加器函数和组合器函数等,使得它可以适用于各种场景。
可以理解为错误,必须要开发者解决以后才能编译通过,解决的方法有两种, 1:throw到上层, 2,try-catch处理。...异常的分类 Error:一般为底层的不可恢复的类; Exception:分为未检查异常(RuntimeException)和已检查异常(非RuntimeException)。...java.lang.IllegalArgumentException 这个异常的解释是”方法的参数错误”,很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常...当对数组的索引值为负数或大于等于数组大小时抛出。 java.lang.ArrayStoreException 数组存储异常。当向数组中存放非数组声明类型对象时抛出。...java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了 null时,抛出该异常。
这个问题通常称为单源最短路径问题 1.无权最短路径(非唯一) 算法分析 由于图没有权,所以我们只需要关注路径上的边 无权最短路径实质上是特殊的有权最短路径,因为我们可以将每条边按权为1处理。...我们可以一层一层处理,先找与s距离为1的节点,之后找距离为2的节点,直到所有节点都被访问到。 注: 按层搜索图的方式,称为广度优先搜索,这种搜索方式类似树的层序遍历。...初始情况下声明所有节点的最短路径未知 起点s声明最短路径为0,并将s入队。...O(|E|+|V|) 2.有权无负值最短路径 Dijkstra算法是解决有权无负值单源最短路径的经典算法。...) 问题定义 针对一个有权图,该图的权有负值,使用某个顶点s作为输入参数,找出该顶点s到其他顶点的最短距离。
******对象** 非严格模式下:thisArg指定为null,undefined,fun中的this指向window对象....如果param不传或为 null/undefined,则表示不需要传入任何参数. apply第二个参数为数组,数组内的值为传给fun的参数。...context === undefined) { // 指定为 null 和 undefined 的 this 值会自动指向全局对象(浏览器中为window) context...{ // 指定为 null 和 undefined 的 this 值会自动指向全局对象(浏览器中为window) context = window } else...{ context = window // 指定为 null 和 undefined 的 this 值会自动指向全局对象(浏览器中为window) } else {
创建无限流的方式主要有以下几种: 使用Stream.generate()方法创建无限流,该方法接受一个Supplier类型的参数,用于生成数据元素。...,该方法接受一个起始值和一个UnaryOperator类型的参数,用于对起始值进行迭代操作。...而 Java 9 中的 ofNullable 方法允许我们创建一个单元素 Stream,可以包含一个非空元素,也可以创建一个空 Stream。...(list.stream().count());//2 //ofNullable():允许值为null Stream stream1 = Stream.ofNullable(null);...另外, Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下表: 方法 返回类型 作用 toList Collector<T, ?
2: 非运行时异常(编译时异常) <1: 非运行时异常类常见异常类说明 :IOException : SQLException 异常处理方式 一:try-catch_finally 捕获处理...简单看几个构造方法 public Exception() 构造详细消息为 null 的新异常。...参数: cause - 原因(保存此原因,以便以后通过Throwable.getCause() 方法获取它)。(允许使用 null 值,指出原因不存在或者是未知的。)...参数: cause - 原因(保存此 cause,以便以后通过 getCause() 方法获取它)。(允许 null 值,指出 cause 是不存在的或是未知的。)...该异常可能由元素 visitor 抛出,指示已经为以前的语言版本创建了 visitor。 18:UnknownTypeException(未知类型异常) 指示遇到未知种类的类型。
领取专属 10元无门槛券
手把手带您无忧上云