对于Java中null的缺点和如何处理,大家讨论了很多遍,guava给出的解决方法是Optional<T>
public static Optional<String> getYourName () { return Optional.of("malone"); } public static void main (String[] args) { Optional<String> result = getYourName(); if (!result.isPresent()) { throw new RuntimeException("错误的返回结果!"); } System.out.println(result.get()); Optional<String> newResult = result.or(Optional.of("hi")); System.out.println(newResult.get()); }
Optional<T> 基本用法如上,具体的可以参考api,当你的返回返回单个对象时,最好使用Optional<T>,这样的代码更容易让你想起去做非空校验;Optional<T>不会缩减你的代码量,只是当返回值为null的时候,给你提供一个更有意义的null,降低null在系统中引起的bug
这里是一个更高级的用法http://www.blogbus.com/logs/235334714.html,扩展了Option<T>,扩展成了一种Fluent风格的代码,代码量不会减少,而且有可能变多,不过使代码更优雅,不过这种东西和设计模式差不多,可以帮你加深理解Optional和Fluent风格的代码,但实际应用中很少会做这种扩展
相关推荐
<artifactId>guava</artifactId> <version>30.1-jre</version> </dependency> ``` 2. **静态导入(Static Imports)** Guava鼓励使用静态导入,以减少代码中的冗余。例如,你可以导入`...
Optional.<T>empty() : new Optional<>(value); } private Optional<T> empty() { return this; } public boolean isPresent() { return value != null; } public T get() { if (!isPresent()) { ...
比如,Guava的`Optional<T>`类可以用来表示一个值可能存在也可能不存在,避免了传统的null值可能导致的空指针异常。`Optional`提供了`of(T t)`、`empty()`和`ofNullable(T t)`等方法来创建实例。 总结来说,Java 8...
<artifactId>guava</artifactId> <version>12.0</version> </dependency> ``` - **官方网站**:`http://code.google.com/p/guava-libraries/` #### 二、Strings处理 Guava中的字符串处理工具极大地方便了开发...
Optional<String> optionalName = Optional.ofNullable(getUserName()); if (optionalName.isPresent()) { System.out.println("User name is: " + optionalName.get()); } else { System.out.println("User name ...
`Optional<T>` 是一个容器对象,可能包含或不包含非空值。如果值存在则 `isPresent()` 返回 `true`,调用 `get()` 会返回该对象。这可以避免空指针异常,使代码更加安全。 2. **Objects**: Guava 的 `Objects` 工具...
super T, Optional<U>> mapper)`**:类似于 `map()`,但转换的结果必须是一个 `Optional`。如果原始 `Optional` 有值且映射函数返回一个非空 `Optional`,则返回这个 `Optional`,否则返回一个空的 `Optional`。 #...
- **错误处理**: 引入了`Optional`类,帮助开发者更好地处理null值问题,减少空指针异常的发生。 总的来说,Guava库是Java开发者的强大工具,它提供的各种工具和类库能帮助开发者编写更高效、更健壮的代码。无论是...
Optional类的目的是为了帮助开发者更优雅地处理null值问题,避免在代码中出现大量的null检查语句。在上面提到的例子中,通过使用Optional,我们可以有效地避免空指针异常,并且使代码更加清晰。 通过使用Maven这样...
Guava的基础模块提供了许多实用工具类,包括但不限于: Predicates(谓词)、Functions(函数)、Optional(可选值)、Ordering(排序)等。它们可以帮助开发者构建更加模块化和可测试的代码,同时减少null指针异常...
8. **其他实用工具**:如Preconditions用于参数检查,Optional用于表示可能为空的值,CheckNotNull防止null值导致的错误,以及RangeSet和Range用于数值范围的操作等。 阅读这份中文文档,无论是初学者还是经验丰富...
在Java 8之前,Guava的Optional类已经提供了防止null值引起的异常的良好解决方案,强制开发者明确处理可能的缺失值。 通过研究"guava-master.zip"中的源代码,我们可以了解Guava库的实现原理,学习Google在编程...
8. **Optional 类**:Guava引入了`Optional`类,用于表示可能为null的值,避免了空指针异常,提高了代码的健壮性。 9. **事件监听**:Guava的`EventBus`是一个简单的发布-订阅事件总线,用于组件间的通信,使得松...
还有Optional类,用于表示可能为null的值,从而避免空指针异常,提高了代码的安全性。 在并发编程方面,Guava的ImmutableList、ImmutableSet和ImmutableMap等不可变集合在多线程环境中尤其适用,因为它们保证了线程...
4. **Optional类**:Guava的Optional类用于表示可能存在也可能不存在的值,避免了null值带来的问题。它鼓励开发者更明确地表达代码逻辑,降低了空指针异常的风险。 5. **预加载(Predicates)** 和 **函数式编程**:...
5. **Optional类**:在Java 8之前,Optional类是Google Collections的一个重要特性,用来表示可能为null的对象引用,从而减少NullPointerException的风险。 6. ** Predicates**:预定义了一系列谓词(Predicate接口...
5. **Optional**:也是自Java 8引入的一个工具类,用于避免空指针异常,通过Optional对象可以更好地表达null值的存在与否,提高了代码的健壮性。 6. **Collections**:`java.util.Collections`类提供了对集合进行...
6. **Optional**:一个容器对象,可能包含或者不包含非null值。它鼓励了更清晰的编程风格,避免了空指针异常。 7. **ParallelArray**和**ParIterable**:这两个工具支持并行计算,利用多核处理器的优势,提高了数据...
- **空字符串与null**:转换时要注意处理空字符串和null值,防止`NullPointerException`或`NumberFormatException`。 - **格式问题**:转换整数时,如果字符串包含非数字字符,会抛出`NumberFormatException`。...