最近在开发项目时,我遇到了一个需要从 Hyperlink 对象中获取 link 属性的小需求。这个过程中我需要判断 Hyperlink 对象是否为 null,以防止出现空指针异常。面对这种情况,有两种常见的处理方式。一种是使用 Optional.ofNullable() 方法,另一种则是使用传统的 null 检查。这两种方法分别对应以下代码片段:// 通过...
Optional<String> opt = Optional.ofNullable(name); assertEquals("John", opt.get()); } 不过,你看到了,这个方法会在值为null的时候抛出异常。要避免异常,你可以选择首先验证是否有值: @TestpublicvoidwhenCheckIfPresent_thenOk(){ User user =newUser("john@gmail.com","1234"); Optional<User> opt = ...
private Optional() { this.value = null; } private Optional(T value) { this.value = Objects.requireNonNull(value); } //这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值 public static<T> Optional<T> empty() {
Optional<String> opt =Optional.ofNullable(name); assertEquals("John", opt.get()); } 这个方法会在值为 null 的时候抛出异常。要避免异常,你可以选择首先验证是否有值: @TestpublicvoidwhenCheckIfPresent_thenOk() { User user=newUser("john@gmail.com", "1234"); ...
findMax(null); } private static void findMax(int[] arr) { int max = arr[0]; //check other elements in loop } 1. 2. 3. 4. 5. 6. 7. 这会在第6行导致 NullPointerException。 因此,访问空 对象的任何字段,方法或索引会导致 NullPointerException,如上面的示例所示。避免NullPointerException的...
//采用optional return Optional.ofNullable(str).map(String::length).orElse(0); //再来个复杂点的 public String isCheckUser(User user){ if(null != user){ // 获取角色 if(null != user.getRole()){ // 获取管理员权限 if(null != user.getRole().getPermission()){ ...
在讲述Optional之前,我们来看下通常情况下我们是如何防止空指针的。 字符串equals 字符串的操作是最常见的操作,使用字符串的equals方法很有可能抛出空指针异常,比如像下面的代码,如果a变量为Null,则毫无疑问会抛出空指针异常: a.equals("aaa"); 建议:使用Objects.equals()或者使用其他工具类方法替代,或者确保obj.equa...
Preconditions.checkNotNull(param, "param不能为null"); // 其他逻辑 } 使用Optional Guava包括了自己的Optional类实现,与Java 8的Optional不同,它提供了额外的便利方法。 Optional<String> optionalStr = Optional.fromNullable(string); if (optionalStr.isPresent()) { ...
if(null == str) { // 空指针判定 return 0; } return str.length(); //采用optional return Optional.ofNullable(str).map(String::length).orElse(0); //再来个复杂点的 public String isCheckUser(User user){ if(null != user){ // 获取角色 if(null != user.getRole()){ // 获取管理员...
1、使用 Optional.ofNullable() String link = Optional.ofNullable(hyperlink) .map(Hyperlink::getLink) .orElse(null); 这种方法使用了 Optional.ofNullable(),结合 map() 来处理可能的 null 值。它的优势在于: 简洁优雅:链式调用的方式使代码更加简洁,容易理解,尤其适合团队已经熟悉并经常使用 Optional 的情况...