浅谈——Java新特性

  • 枚举(enum)
  1. 枚举类型不能被用户实例化对象(不能new)
  2. 定义枚举类型(通常名字是大写)

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   压制警告

  • 接口增强
  1. 接口增加默认方法(有实现的方法)原因:接口只是一个方法的声明,而没有具体的方法实现,当子类实现此接口时,子类的功能不满足要求,就得给接口里面加方法,当有三万个子类需要扩展功能时,就得在接口中,实现三万个方法,代码量太大
  2. 接口的三个特点:
  1. 定义标准
  2. 定义功能
  3. 定义远程方法

3.接口定义的内容:

1.定义常量

2.定义抽象方法

3.通过default定义普通方法,子类可以根据实际使用情况覆写该方法

4.通过static定义静态方法

 

四.Lambda表达式(函数式编程)

  1. 面向对象最大的局限:结构必须非常完整
  2. 使用函数式编程的前提:接口必须只有一个抽象方法,最好在定义时就让其只能定义一个抽象方法,所以有新的注解@FunctionalInterface
  3. 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);

方法引用本质:

  1. 面向对象中的方法提供了别名
  2. 是面向对象和面向函数的桥梁

 

 

猜你喜欢

转载自blog.csdn.net/qq_41832361/article/details/89456906