Java基础001 --- 结构化编程

本随笔旨在分享一些结构化编程思想,如有不妥,望指正,共同学习共同进步!!

1、非空断言

使用jdk自带的Objects类

使用开源guava库

2、非空赋值

使用场景:构造器、java bean的setter方法中

使用jdk自带的Objects类

使用开源guava库

3、guava的参数校验

这里说一些guava参数校验功能,guava提供了优雅的参数校验方法

4、Holder类的使用

在输入校验方法中,我们通常希望返回校验结果true/false以及校验提示信息,但是java方法只支持返回单个参数,并且我们不希望修改输入数据

因此,我们可以通过使用Holder类完成该功能;

Holder类非常简单,只有一个泛型处理,以及一个属性value

下面为使用方法:

5、Optional类的使用

Optional类由java1.8引入,主要为了简化非空判断,并且能够快速定位空指针异常

(1) of

用来创建一个非空对象,传入的值不能为空,如果为空,抛空指针异常

(2)ofNullable

用来创建一个对象,输入可以为空;为空,则创建一个空对象。

(3)get

如果创建的Optional中的值存在,返回该值,否则抛NoSuchElementException异常

(4)isPresent

如果创建的Optional中的值存在,返回true,否则返回false

(5)ifPresent

如果创建的Optional中的值存在,则dosomething;   Optional.ofNullable(value).ifPresent(dosomething)

(6)filter

如果创建的Optional对象中的值满足filter中的过滤条件,返回包含该值的Optional对象,否则,返回空的Optional对象

(7)map

如果创建的Optional中的值存在,则执行map中的funcaiton函数接口

(8)flatMap

功能和map基本一致,区别是,如果map中的function返回值为Optional,flatMap不会返回双层Optional,但是map方法会返回双层Optional

(9)orElse

如果创建的Optional中的值存在,返回该值,否则返回orElse提供的值

(10)orElseGet

如果创建的Optional中的值存在,返回该值,否则返回orElseGet提供的function返回的值

(11)orElseThrow

如果创建的Optional中的值存在,返回该值,否则抛出指定异常

未完待续

原文地址:https://www.cnblogs.com/sniffs/p/11565098.html

时间: 2024-10-08 06:58:32

Java基础001 --- 结构化编程的相关文章

java基础-001

一.区分final . finally . finalize 1.关键字final Java语言的关键字final可以用于变量.类或方法,但是含义会有所不同. -用于变量:一旦初始化,变量值就不能修改 -用于方法:该方法不能被子类重写(overrride) -用于类:该类不能派生出子类 2.关键字finally 关键字finally和try/catch语句配对使用,即使有异常抛出,也能确保某段代码一定会执行.finally语句块会在try/catch语句块之后,在控制权交回之前执行. 3.fin

Java基础001:final关键字、String字符串的相加问题

1.final关键字的作用 1.1.final修饰的类:不能被其他类继承:1.2.final修饰的方法:不能被子类重写1.3.final修饰的变量:分两种情况,引用变量.基本类型变量,如下: final修饰的引用变量:一旦给其赋值,就不能被再次赋值 final String s = "32"; //引用变量 s = "1"; /** 报错:The final local variable s cannot be assigned. It must be blank

java基础学习--001

一.认识java: 1. J2EE:java2的企业版.主要用于分布式的网络程序的开发,如电子商务网站和ERP系统: J2SE:java2的标准版.主要用于桌面应用软件的编程: J2ME:java2的微缩版.主要用于嵌入式系统开发,如手机和PDA的编程: 2. java的运行过程: 源程序(.java文件)----->java编译器-----> 字节码(.class文件)-----> 类装载器----->字节码校验器----->解释器----->操作系统平台 3. ja

java基础--JDK安装、环境变量配置、工具开发第一个程序、数据类型、运算符

**-----Java基础大纲-----**   **-----本章节-----** 1.Java语言的历史.特点及工作原理 2.JRE和JDK的介绍 3.Java运行环境和开发工具 4.Java基础语法 **-----下一章节-----** 5.条件语句 6.循环 7.数组 ============================================== 一:历史及开发准备 1.Java发展历程及来源 (1)发展历程 1996年1月,Sun公司发布了Java的第一个开发工具包(JD

java基础01

1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Envirnment),一堆java工具和 * java基础的类库(Java API===>java应用程序接口,其实就是大牛给我们写好的一些class文件)! * * J2SE :标准版(standard edition) * * J2EE :企业版(enterprise edition) * * J2

微冷的雨Java基础学习手记(一)

使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每天问问自

Java基础总结1

Java基础总结1 简单Java程序hello word. class test //类名为test的类 { publicstatic void main(String[] args) //主函数程序的入口 { System.out.println("HelloWorld!");//打印语句输出Hello Word语句,""英文双引号内修饰的是字符串 } } 在声明整型变量或定义类的名称时,可以由字母.数字.下划线.$符号组成,不能以数字开头,也不能以关键字开头,因

Java基础:泛型

Java的泛型是什么呢, 就是类型的参数化,这得类型包括方法参数和返回值,也就是原本该是确定类型的地方换成了变量,把类型的确定时间向后延迟了. 在之前,学过"重载"的概念,重载是什么呢,举例来说 public class Test{ // 处理整型数据 void receive(int i) { System.out.println("Received one int data"); System.out.println("i="+i); } /

java 复习001

java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时默认是扩展为1.5倍 + 1个 ArrayList,LinkedList,Vector 区别 Vector内存扩展和ArrayList一样,不过Vector是默认扩展为2倍 Vector支持线程的同步,因此牺牲了访问性能 ArrayList,Vector都是使用数组实现,插入删除效率低 Linked