java学习day15面向对象(八)

lamabda 枚举

  • lamabda表达式
    • 结构
    • 语法示例
    • 注意点
  • 枚举
    • 枚举的产生
    • 枚举的好处
    • 枚举声明格式
    • 枚举特点

lamabda表达式

使代码更具有美感,减少拖沓的代码

结构

(parameters)->(expression)

(parameters)->{statements}

语法示例

不需要参数,返回值为 5 : () -> 5
接收一个参数(数字类型),返回其2倍的值: x -> 2 * x
接受2个参数(数字),并返回他们的差值: (x, y) -> x – y
接收2个int型整数,返回他们的和: (int x, int y) -> x + y
接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void): (String s) -> System.out.print(s)

注意点

它并不会被编译生成传统带$的匿名内部类
lambda是方法的实现
lambda是延迟执行的
必须是接口、
接口中只有一个抽象方法
@FunctionalInterface 注解,编译器如果发现你标注了这个注解的接口有多于一个 抽象方法的时候会报错的
可以直接访问标记了final的外层局部变量,或者实例的成员变量以及静态变量
lambda表达式没法访问到默认的方法

枚举

枚举的产生

前身是接口的常量;

  1. 代码可读性差、易用性低。
  2. 类型不安全。
  3. 耦合性高,扩展性差。
    枚举由此诞生!

枚举的好处

能更好的改善使用接口常量的小问题
拥有将一个任意项同另一个项相比较的能力
枚举还可以进行迭代

枚举声明格式

[访问权限] enum 枚举名{
枚举值列表

枚举特点

是一个特定类型的类。
java.lang.Enum的隐式子类。
可以实现接口
不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
Enum默认实现了java.lang.Comparable接口。
Enum覆载了了toString方法
Enum提供了一个valueOf方法,这个方法和toString方法是相对应的
Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值
Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定

你可能感兴趣的:(java)