`

Guava Optional<T> 关于null

阅读更多

   对于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风格的代码,但实际应用中很少会做这种扩展

分享到:
评论

相关推荐

    Guava教程1使用GoogleCollections,G

    &lt;artifactId&gt;guava&lt;/artifactId&gt; &lt;version&gt;30.1-jre&lt;/version&gt; &lt;/dependency&gt; ``` 2. **静态导入(Static Imports)** Guava鼓励使用静态导入,以减少代码中的冗余。例如,你可以导入`...

    Optional:Java8 中可选类的反向移植

    Optional.&lt;T&gt;empty() : new Optional&lt;&gt;(value); } private Optional&lt;T&gt; empty() { return this; } public boolean isPresent() { return value != null; } public T get() { if (!isPresent()) { ...

    996视频学习笔记-20211115.docx

    比如,Guava的`Optional&lt;T&gt;`类可以用来表示一个值可能存在也可能不存在,避免了传统的null值可能导致的空指针异常。`Optional`提供了`of(T t)`、`empty()`和`ofNullable(T t)`等方法来创建实例。 总结来说,Java 8...

    Guava入门指南培训PPT

    &lt;artifactId&gt;guava&lt;/artifactId&gt; &lt;version&gt;12.0&lt;/version&gt; &lt;/dependency&gt; ``` - **官方网站**:`http://code.google.com/p/guava-libraries/` #### 二、Strings处理 Guava中的字符串处理工具极大地方便了开发...

    Google Guava 30.1.1常用类介绍及实践代码

    Optional&lt;String&gt; optionalName = Optional.ofNullable(getUserName()); if (optionalName.isPresent()) { System.out.println("User name is: " + optionalName.get()); } else { System.out.println("User name ...

    Guava学习-----弱鸡晋级之路

    `Optional&lt;T&gt;` 是一个容器对象,可能包含或不包含非空值。如果值存在则 `isPresent()` 返回 `true`,调用 `get()` 会返回该对象。这可以避免空指针异常,使代码更加安全。 2. **Objects**: Guava 的 `Objects` 工具...

    Java8 Optional原理及用法解析

    super T, Optional&lt;U&gt;&gt; mapper)`**:类似于 `map()`,但转换的结果必须是一个 `Optional`。如果原始 `Optional` 有值且映射函数返回一个非空 `Optional`,则返回这个 `Optional`,否则返回一个空的 `Optional`。 #...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    - **错误处理**: 引入了`Optional`类,帮助开发者更好地处理null值问题,减少空指针异常的发生。 总的来说,Guava库是Java开发者的强大工具,它提供的各种工具和类库能帮助开发者编写更高效、更健壮的代码。无论是...

    Google的guava实战

    Optional类的目的是为了帮助开发者更优雅地处理null值问题,避免在代码中出现大量的null检查语句。在上面提到的例子中,通过使用Optional,我们可以有效地避免空指针异常,并且使代码更加清晰。 通过使用Maven这样...

    google guava

    Guava的基础模块提供了许多实用工具类,包括但不限于: Predicates(谓词)、Functions(函数)、Optional(可选值)、Ordering(排序)等。它们可以帮助开发者构建更加模块化和可测试的代码,同时减少null指针异常...

    guava中文文档,PDF+word双版本

    8. **其他实用工具**:如Preconditions用于参数检查,Optional用于表示可能为空的值,CheckNotNull防止null值导致的错误,以及RangeSet和Range用于数值范围的操作等。 阅读这份中文文档,无论是初学者还是经验丰富...

    guava-master.zip

    在Java 8之前,Guava的Optional类已经提供了防止null值引起的异常的良好解决方案,强制开发者明确处理可能的缺失值。 通过研究"guava-master.zip"中的源代码,我们可以了解Guava库的实现原理,学习Google在编程...

    Getting Started with Google Guava

    8. **Optional 类**:Guava引入了`Optional`类,用于表示可能为null的值,避免了空指针异常,提高了代码的健壮性。 9. **事件监听**:Guava的`EventBus`是一个简单的发布-订阅事件总线,用于组件间的通信,使得松...

    Guava是个风火轮之基础工具(3)Java开发Java经

    还有Optional类,用于表示可能为null的值,从而避免空指针异常,提高了代码的安全性。 在并发编程方面,Guava的ImmutableList、ImmutableSet和ImmutableMap等不可变集合在多线程环境中尤其适用,因为它们保证了线程...

    java基础 集合-26-Guava开源组件使用(4)

    4. **Optional类**:Guava的Optional类用于表示可能存在也可能不存在的值,避免了null值带来的问题。它鼓励开发者更明确地表达代码逻辑,降低了空指针异常的风险。 5. **预加载(Predicates)** 和 **函数式编程**:...

    google common jar包

    5. **Optional类**:在Java 8之前,Optional类是Google Collections的一个重要特性,用来表示可能为null的对象引用,从而减少NullPointerException的风险。 6. ** Predicates**:预定义了一系列谓词(Predicate接口...

    java开发工具类

    5. **Optional**:也是自Java 8引入的一个工具类,用于避免空指针异常,通过Optional对象可以更好地表达null值的存在与否,提高了代码的健壮性。 6. **Collections**:`java.util.Collections`类提供了对集合进行...

    google-collect-1.0

    6. **Optional**:一个容器对象,可能包含或者不包含非null值。它鼓励了更清晰的编程风格,避免了空指针异常。 7. **ParallelArray**和**ParIterable**:这两个工具支持并行计算,利用多核处理器的优势,提高了数据...

    Java 字符串和基本数据类型之间的转换

    - **空字符串与null**:转换时要注意处理空字符串和null值,防止`NullPointerException`或`NumberFormatException`。 - **格式问题**:转换整数时,如果字符串包含非数字字符,会抛出`NumberFormatException`。...

Global site tag (gtag.js) - Google Analytics