Java14不得不知的5个新功能

Java14不得不知的5个新功能

虽然咱们如今还用的JDK8html

文本块

之前在Java里写个长点的字符串是这个样子地:程序员

String sql = "select * from t_tianlangstudio_student"   + " where age > 23 and age < 30"  +  " and  sex = 1";123

若是字符串中再包含有双引号还须要转义,虽然有IDE帮忙,但仍是时常羡慕ScalaRust里的文本块(多行字符串)的写法,那个酸爽,Java14里终于也能够这样写了:sql

public static String  index = """		<html>
				<head>
				       <title>tianlangstudio</title>
				</head>
				<body>
				       <h1>一个不安分的程序员</h1>
				</body>
		</html>
		""";12345678910

是否是清爽多了?app

Switch表达式

之前使用switch大概是这个样子地 :ide

public static int  codeDemo(int i)  {
			int result;
			switch(i) {
					case 1:
					case 2: 
					         result = 18;
					         break;
					case 3:
					         result = 28;
					         break;
					 default: 
					          result = 100;
					          break;
             }
			return result;}12345678910111213141516

如今能够这样写了:spa

public static int code(String s)   {
		int result = switch(s) {
                  case "a"  , "b"   -> 1;
                  case "c"  -> 2;
                  default -> 100; 
         }
         return result;}12345678

是否是清爽了不少?Java也开始区分表达式和(声明)语句了?关于表达式和语句能够参考Rust .
不过Rust里更多使用Match,Java14也对模式匹配有了些许支持,主要体如今instanceOf的使用上。scala

instanceOf

使用instanceOf判断一个变量是否属于某个类型的实例的同时,还能声明一个变量做为当前类型的实例进行更多的判断.就像这个样子:指针

       public static void demo(Object obj) {
               if (obj instanceof String s && s.length() > 4) {
               				System.out.println("it is a String and length greater than 4");
                }
       }12345

没看出哪里不同了?注意看String s 。能够自行脑补下要使用JDK8编写代码是什么样子的?调试

record

有没以为每次定义个(Java类)POJO,须要写大量的get,set方法还得重写equals方法特别麻烦,是否是也想要Scala中的样例类、Rust中的类元组struct那样简洁的类型定义方式?
Java14提供了record,能够这样定义类型了:code

public static void main(String[] args) {
	Person person1 = new Person("Tianlang", 23);
	Person person2 = new Person("Tianlang",  23);
	System.out.println(person1.equals(person2));  // true}public static record Person(String name, int age){}1234567

就问你清爽不清爽 ?

更有用的空指针异常提示信息

你是否也像我同样常常写链式调用的代码,就像这样:

String str = obj.fieldA.fieldAA.fieldAAA;1

这样写起来能够少费几根头发起变量名称,直到出现了空指针异常,异常信息只告诉你那一行出现了空指针,为了调试代码只好相似这样:

System.out.println(obj);System.out.println(obj.fieldA);System.out.println(obj.fieldA.fieldAA);String str = obj.fieldA.fieldAA.fieldAAA;1234

是否也曾像我同样从心底升起无数个草泥马. 多是咱们的呼唤起了做用,终于在Java14中会告诉你具体那个代码调用出了空指针。记得要在代码执行时设置:

-XX:+ShowCodeDetailsInExceptionMessages

若是你像我同样不想升级JDK又想尝试新的写法也能够考虑新语言如:Scala 或Rust语言.

相关文章
相关标签/搜索