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 的处理很有帮助,同时也是在日后进行项目开发之中使用次数很多的一个程序类。

相关文章
解决idea中的Alt+回车键用不了的问题(超详细)
目的:解决idea中的Alt+回车键用不了的问题
2007 0
解决idea中的Alt+回车键用不了的问题(超详细)
|
canal 消息中间件 关系型数据库
详解 canal 同步 MySQL 增量数据到 ES
canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这篇文章,我们手把手向同学们展示**使用 canal 将 MySQL 增量数据同步到 ES**
详解 canal 同步 MySQL 增量数据到 ES
|
Web App开发 移动开发 安全
Android DEPPLINK、APPLink原理简析
Android DEPPLINK、APPLink原理简析
2764 0
Android DEPPLINK、APPLink原理简析
MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。
20861 0
|
存储 监控 安全
5款 Syslog集中系统日志常用工具对比推荐
集中管理Syslog有助于持续监控网络中的恶意活动,确保日志的搜索和分析更为便捷。常用工具包括Rsyslog、Syslog-ng、Logstash和Fluentd,它们各有优劣。Rsyslog通过多种协议确保日志传输的安全性;Syslog-ng支持高效收集和转发日志;Logstash能解析多源日志并索引;Fluentd将日志转换为JSON格式。卓豪EventLog Analyzer则提供一体化的日志管理,支持日志分析、报表生成、用户行为分析及实时告警,是全面的日志管理解决方案。
143 0
|
负载均衡 安全 网络协议
|
12月前
|
人工智能 安全 大数据
企业内训|信创工作的技术难点与最佳实践-某央企金科公司
近日,TsingtaoAI组织信创技术专家,为上海某央企金融科技公司研发信创技术企业培训课程。课程通过系统化的理论学习与丰富的案例分析,全面解析信创政策、监管要求、行业趋势以及信创技术的核心难点。课程涵盖信创政策解读、行业信息洞察、业界技术栈分析、核心数据库信创改造、信创终端推广适配等多个模块。通过案例式、项目式和实战式的教学模式,帮助学员在复杂多变的信创环境中高效应对各种挑战。
569 3
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
613 4
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。

热门文章

最新文章