java15 新特性

java 15中更新了一些新的内容,这里仅列出对于写代码方面的新特性。

Sealed Classes

密封类和接口,作用是限制一个类可以由哪些子类继承或者实现。

  1. 如果指定模块的话,sealed class和其子类必须在同一个模块下。如果没有指定模块,则需要在同一个包下。
  2. sealed class指定的子类必须直接继承该sealed class。
  3. sealed class的子类要用final修饰。
  4. sealed class的子类如果不想用final修饰的话,可以将子类声明为sealed class。

Animal类,在指定允许继承的子类时可以使用全限定名

public sealed class Animal 
    permits Cat, Dog{//多个子类之间用,隔开

		public void eat(){}
}

Cat类

public final class Cat extends Animal{
	public void eat(){
		System.out.println("123");
	}
}

Dog类

public sealed class Dog extends Animal
	permits Husky {}

Husky类

public final class Husky extends Dog{
}

Test类

public class Test{
	public static void main(String[] args){
		Cat c = new Cat();
		c.eat();
		Dog d = new Dog();
	}
}

CharSequence新增的方法

该接口中新增了default方法isEmpty(),作用是判断CharSequence是否为空。

TreeMap新增方法

  • putIfAbsent
  • computeIfAbsent
  • computeIfPresent
  • compute
  • merge

文本块

文本块由预览版变为正式版

无需配置环境变量

win系统中安装完成之后会自动将java.exe, javaw.exe, javac.exe, jshell.exe这几个命令添加到环境变量中。这部分可以打开环境变量看下。