Optional 类|学习笔记

简介: 快速学习 Optional 类

开发者学堂课程【Java 高级编程Optional 类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/348


Optional 类


内容介绍

1. Optional 类的主要功能

2.范例:传统的引用传递问题

3.范例:修改程序,按照正规的程序

 

 

Optional 类的主要功能是进行 null 的相关处理,在以前进行程序开发时,为了防止程序之中出现空指向异常,往往可以追加有 null 的验证。

 

范例:传统的引用传递问题

interface IMessage {

public string getcontent() ;

}

class MessageImpl implements IMessage {

@override

public string getContent() {

return " www.mldn.cn";

}

}

class MessageUtil {

private MessageUtil() {}

public static IMessage getMessage() {

return new MessageImpl( ) ;

}

public static void useMessage( IMessage msg) {

if (msg != nu11)

system.out.println(msg.getContent());

//有可能因为出现null,而导致空指向)

}

public class JavaAPIDemo {

public static void main(String[ ] args) throws Exception {

}

}

总结:

在引用接受的一方,我们往往都是被动的一方进行判断。

为了解决这种被动的操作处理,在 Java 中提供了一个有一个 optional 类,这个类可以实现空的处理操作,在这个类里面提供有如下的一些操作方法:

返回空数据: public staticT> Optional empty();

获取数据: public T get();

保存数据,但是不允许出现 null: public static  Optional of(T value).

如果在保存数据的时候存在有 null,则会抛出 NullPointerException 异常;

空的时候返回其他数据:public T orElse(T other)

 

范例:修改程序,按照正规的程序

interface IMessage {

public string getcontent() ;

}

class MessageImpl implements IMessage {

@override

public string getContent() {

return " www.mldn.cn";

}

}

class MessageUtil {

private MessageUtil() {}

public static Optional<IMessage> getMessage() {

return new MessageImpl( ) ;

}

public static void useMessage( IMessage msg) {

if (msg != nu11)

system.out.println(msg.getContent());//有可能因为出现null,而导致空指向

}

public class JavaAPIDemo {

public static void main(String[ ] args) throws Exception {

IMessage temp = Messageutil.getMessage( ).get() ; //获取数据MessageUtil.useMessage(temp) ;

}

}

class MessageUtil {

private MessageUtil(){

public static optional<IMessage> getMessage() {

return Optional.of(new MessageImpl()) ; //有对象

}

public static void useMessage( IMessage msg) {

if (msg != nul1) {

system.out.println(msg.getContent());//有可能因为出现null,而导致空指向

}

}

}

interface IMessage {

public String getcontent() ;

}

图片1.png

总结:

在所有引用数据类型的操作处理之中,null 是一个重要的技术问题,JDK 1.8 后提供的新的类,对于 Null 的处理很有帮助,同时也是在日后进行项目开发之中使用次数很多的一个程序类。

相关文章
|
5月前
|
存储 安全 数据库
【C++ 17 包裹器类 std::optional】“深入理解C++:std::optional的高级应用与原理
【C++ 17 包裹器类 std::optional】“深入理解C++:std::optional的高级应用与原理
290 0
|
5月前
|
安全
Optional
Optional
62 0
|
3月前
|
Java
Optional 常用方法总结
Optional 常用方法总结
27 2
|
4月前
|
Java 编译器
Guava Optional类分析
Guava Optional类分析
Guava Optional类分析
|
3月前
|
Java 容器
Java中使用Optional类的建议
Java中使用Optional类的建议
|
5月前
|
安全 Java 开发者
Java一分钟之-Optional类:优雅处理null值
【5月更文挑战第13天】Java 8的`Optional`类旨在减少`NullPointerException`,提供优雅的空值处理。本文介绍`Optional`的基本用法、创建、常见操作,以及如何避免错误,如直接调用`get()`、误用`if (optional != null)`检查和过度使用`Optional`。正确使用`Optional`能提高代码可读性和健壮性,建议结合实际场景灵活应用。
165 3
|
5月前
|
安全 Java 开发者
jdk1.8 Optional类从入门到实战
Optional 类是 Java 8 引入的一个容器类,用于表示一个值存在或不存在。其在 java.util 包中,主要目的是为了解决 Java 程序中广泛存在的空指针异常(NullPointerException)问题,同时提供了一种更优雅的方式来处理可能为 null 的对象。 在 Java 8 之前,处理 null 值往往依赖于显式的 null 检查,这种方式不仅增加了代码的复杂度,而且容易出错。Optional 类提供了一种更好的解决方案,通过封装可能为 null 的值,强制开发者显式地处理值存在或不存在的情况,从而减少在运行时出现 NullPointerException 的可能性。
46 3
|
5月前
|
存储 安全 C++
【C++ 包装器类 std::optional】全面入门指南:深入理解并掌握C++ std::optional的实用技巧与应用
【C++ 包装器类 std::optional】全面入门指南:深入理解并掌握C++ std::optional的实用技巧与应用
192 0
|
11月前
Optional再扩展
Optional再扩展
31 0
|
容器
Optional容器类
Optional容器类
44 0