java8(jdk1,移动端混合开发

本文详细介绍了Java8的新特性,包括接口的默认方法和静态方法,方法引用,重复注解,扩展注解的支持,Optional类以及Stream API的使用。通过示例展示了如何使用默认方法、方法引用以及Stream进行更简洁的编程,并解释了Optional类避免空指针异常的作用。
摘要由CSDN通过智能技术生成

System.out.println(“正在监听执行过程”);

});

**示例三:**迭代输出

// Java8之前:

List features = Arrays.asList(“Lambdas”, “Default Method”, “Stream API”, “Date and Time API”);

for (String feature : features) {

System.out.println(feature);

}

// Java8之后:

List features = Arrays.asList(“Lambdas”, “Default Method”, “Stream API”, “Date and Time API”);

features.forEach(n -> System.out.println(n));

// 使用Java8的“方法引用”更方便,方法引用由::双冒号操作符标示,如下:

features.forEach(System.out::println);

二、接口的默认方法和静态方法

默认方法使得开发者可以在 不破坏二进制兼容性的前提下,往现存接口中添加新的方法,即不强制那些实现了该接口的实现类也同时实现这个新添加的方法。

简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。

1问:为什么java8要有默认方法这个特性?

java8之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口的时候,需要修改全部实现该接口的类, java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时不影响已有的实现。所以引进的默认方法的目的是为了解决接口的修改与现有的实现不兼容的问题。

2问:默认方法和抽象方法之间的区别是什么?

  • 抽象方法需要实现,而默认方法不需要;
  • 接口提供的默认方法会被接口的实现类继承或者覆写;

我们只需在方法名前面加个 default 关键字即可实现默认方法,默认方法语法格式如下:

public interface Vehicle {

// 定义一个默认方法

default void print(){

System.out.println(“我是一辆车”);

}

// 定义一静态方法

static void blowHorn(){

System.out.println(“按喇叭”);

}

}

默认方法和静态方法的完整实例:

public class Java8Test {

public static void main(String args[]){

MobilePhone mobilePhone = new Phone();

mobilePhone.print();

}

}

//接口1

interface MobilePhone {

//默认方法

default void print(){

System.out.println(“我是手机”);

}

}

//接口2

interface HuaWei {

//默认方法

default void print(){

System.out.println(“我是华为手机”);

}

//静态方法

static void foldingScreen(){

System.out.println(“我是华为折叠屏手机”);

}

}

//实现类

class Phone implements MobilePhone, HuaWei {

public void print(){

MobilePhone.super.print();

HuaWei.super.print();

HuaWei.foldingScreen();

}

}

三、方法引用

方法引用使得开发者可以直接引用现存的方法、Java类的构造方法或者实例对象。方法引用和Lambda表达式配合使用,使得java类的构造方法看起来更加紧凑简洁,减少冗余代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值