给女朋友讲解什么是Optional【JDK 8特性】

前言

只有光头才能变强

前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。

  • 至于她能不能看懂,那肯定是看不懂的。(学到变量/for循环的女人怎么能看懂呢)

不知道大家还记得上一篇《阿里巴巴 Java开发手册》读后感不,当时阅读到空指针异常(NPE)时,书上提到JDK 8有个Optional类供我们使用,该类可以尽可能地防止出现空指针异常(NPE)。

文本力求简单讲清每个知识点,希望大家看完能有所收获

一、基础铺垫

我们都知道JDK 8最重要的新特性是Lambda表达式,这个可以让我们简化非常多的代码编写,不知道大家会使用了没有。这里我简单跟大家来回顾一下~

1.1Lambda简化代码例子

下面就以几个例子来看看Lambda表达式是怎么简化我们代码的编写的。

首先我们来看看创建线程

 public static void main(String[] args) {     // 用匿名内部类的方式来创建线程     new Thread(new Runnable() {         @Override         public void run() {             System.out.println("公众号:Java3y---回复1进群交流");         }     });      // 使用Lambda来创建线程     new Thread(() -> System.out.println("公众号:Java3y---回复1进群交流")); }

再来看看遍历Map集合:

  public static void main(String[] args) {     Map<String, String> hashMap = new HashMap<>();     hashMap.put("公众号", "Java3y");     hashMap.put("交流群", "回复1");      // 使用增强for的方式来遍历hashMap     for (Map.Entry<String, String> entry : hashMap.entrySet()) {         System.out.println(entry.getKey()+":"+entry.getValue());     }      // 使用Lambda表达式的方式来遍历hashMap     hashMap.forEach((s, s2) -> System.out.println(s + ":" + s2)); }

在List中删除某个元素

 public static void main(String[] args) {      List<String> list = new ArrayList<>();     list.add("Java3y");     list.add("3y");     list.add("光头");     list.add("帅哥");          // 传统的方式删除"光头"的元素     ListIterator<String> iterator = list.listIterator();     while (iterator.hasNext()) {         if ("光头".equals(iterator.next())) {             iterator.remove();         }     }      // Lambda方式删除"光头"的元素     list.removeIf(s -> "光头".equals(s));          // 使用Lambda遍历List集合     list.forEach(s -> System.out.println(s)); }

从上面的例子我们可以看出,Lambda表达式的确是可以帮我们简化代码的。

1.1函数式接口

使用Lambda表达式,其实都是建立在函数式接口上的。我们看看上面的代码的接口:

创建多线程的Runnable接口:

 @FunctionalInterface public interface Runnable {     public abstract 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信