📜  java中的新关键字(1)

📅  最后修改于: 2023-12-03 15:32:01.115000             🧑  作者: Mango

Java中的新关键字

随着Java的不断发展与更新,Java中也不断添加了新的关键字,下面介绍一些较新的关键字。

1. var

var 是Java 10中引入的一个新类型推断关键字。它用于声明一个局部变量而不显式声明其类型,而是根据变量的初始值推断其类型。这可以使代码更加简洁和易于维护。例如:

var list = new ArrayList<String>();

等同于

ArrayList<String> list = new ArrayList<String>();

注意,使用var需要遵循以下规则:

  • 必须在声明局部变量时使用。
  • 不能用于方法形参、构造函数参数以及类成员变量的声明。
  • 变量必须在声明时初始化。
2. switch

Java 12中引入了switch的增强版本,可以更轻松地编写更简洁的代码。增强的switch支持使用lambda表达式和方法引用作为语句块。例如:

int status = switch (code) {
    case 200, 201 -> {
        yield 1;
    }
    case 401 -> {
        yield 2;
    }
    default -> {
        Supplier<Integer> supplier = () -> -1;
        yield supplier.get();
    }
};

其中,yield扮演了return的角色,用于返回结果。

3. record

record是Java 14中引入的一个新关键字,用于定义不可变的数值对象。record类似于class,但可以自动生成构造函数、getter和equals/hashCode等方法,用于简化代码。例如:

record Student(String name, int age, String gender) {
    // 无需手动定义构造方法、getter等,会自动生成。
}

使用record定义的对象是不可变的,因为record会自动生成一个final修饰的私有的field,值在构造方法中初始化,之后就不能修改了。例如:

Student student = new Student("Tom", 18, "male");
/* student.name = "Jim";  // 编译错误,由于name被final修饰,因此不能修改 */
4. sealed

sealed是Java 15中引入的一个新关键字,用于限制继承层次结构。使用sealed关键字限制某个类只能被特定的子类继承,同时,这些特定的子类也必须明确指定。例如:

public sealed class Animal permits Dog, Cat, Bird {
    // ...
}

上面的代码指定了Animal可以被DogCatBird这三个类继承。也可以使用non-sealed关键字指定任意的类继承该类。

总结

以上就是一些Java中较新的关键字介绍,使用这些新的关键字可以让Java代码更简洁、易维护。但是,需要注意使用环境和遵循规则。