- 枚举(enum)
- 枚举类型不能被用户实例化对象(不能new)
- 定义枚举类型(通常名字是大写)
public enum Color {
RED,GREEN,BLUE;
}
3. 使用枚举对象,通过枚举类.属性
Color color = Color.RED;
4.枚举类高级的多例设计模型,每个枚举对象有且只有一个
5.列举所有枚举对象,枚举类.values
Color colors=Color.values ();
6.枚举对象的名称,枚举对象.name()
Color colors=Color.values ();
for (Color c:colors) {
System.out.println (c.name ());
}
7.通过枚举类的valueOf()方法获取枚举对象(枚举常量),name必须要存在
Color.valueOf ("RED")
8.枚举类和普通类相似的地方,定义成员--静态属性和方法
RED("1"),GREEN("2"),BLUE("3");
private String rgb;
Color(String rgb){
this.rgb=rgb;
}
public String getRgb() {
return rgb;
}
public void print(){
System.out.println (this+"颜色编码"+this.getRgb ());
}public static void main(String[] args) {
Color.RED.print();
}
}
9.枚举对象的ordinal()开发中避免使用,它的值基于枚举对象定义的顺序
10.枚举类继承自java.lang.Enum类,单继承局限,不能再继承其他类
11.枚举类的构造方法是私有的
12.枚举类可以实现接口
13.switch支持枚举
14.题目:请解释enum和Enum的区别
enum是一个关键字,使用enum定义的枚举类本质上相对于一个类继承了Enum这个抽象类而已
- 注解(Annotation)
- 1.@override准确覆写成功
方法覆写:发生在继承关系之中,子类定义了与父类大方法名称相同,参数列表相同,返回值类型相同称为方法的覆写,被覆写的方法不能够拥有比父类更为严格的访问控制权限
2.@Deprecated 声明过期(保证兼容性)
3.@SuppressWarnings 压制警告
- 接口增强
- 接口增加默认方法(有实现的方法)原因:接口只是一个方法的声明,而没有具体的方法实现,当子类实现此接口时,子类的功能不满足要求,就得给接口里面加方法,当有三万个子类需要扩展功能时,就得在接口中,实现三万个方法,代码量太大
- 接口的三个特点:
- 定义标准
- 定义功能
- 定义远程方法
3.接口定义的内容:
1.定义常量
2.定义抽象方法
3.通过default定义普通方法,子类可以根据实际使用情况覆写该方法
4.通过static定义静态方法
四.Lambda表达式(函数式编程)
- 面向对象最大的局限:结构必须非常完整
- 使用函数式编程的前提:接口必须只有一个抽象方法,最好在定义时就让其只能定义一个抽象方法,所以有新的注解@FunctionalInterface
- Lambda表达式的方法体
(参数名列表)->{
Code1;
Code2;
Return;
};
如果方法体只有一条语句,可以省略{}
如果方法体只有一条语句,并且作为返回值,可以省略return
如果方法体中访问外部变量,隐式外部变量final修饰,和内部类相同
参数名列表中的参数名称不要跟外部代码中的变量名重名
建议编写完整格式
- 方法引用
1.引用静态方法:类名称::static 方法名称(就相当于为方法起了个别名) ;
2.引用某个对象的方法:实例化对象 :: 普通方法
3.引用某个特定类的方法: 类名称 :: 普通方法 ;
4.引用构造方法: 类名称 :: new 。
注意:方法引用一般结合函数式编程使用
六.内建函数式接口
Lamdba的核心在于:函数式接口。而函数式接口的核心:只有一个抽象方法。 java.util.function 实际上函数式编程分为以下四种接口:
1. 功能型函数式接口:public interface Function<T, R> R apply(T t);
2. 供给型函数式接口: public interface Supplier,<T> T get();
3. 消费型函数式接口:public interface Consumer<T> void accept(T t);
4. 断言型接口:public interface Predicate<T> boolean test(T t);
方法引用本质:
- 面向对象中的方法提供了别名
- 是面向对象和面向函数的桥梁