Java14新特性-instanceof模式匹配
2020-07-20 04:06
513 查看
Java14中对instanceof进行了升级,不仅仅是直接用来进行类型匹配,还可以直接转换成相应的实例。
在Java14之前只能这样写:
[code]public class Java14Before { public static void main(String[] args) { Person person = new Person("小明", 10, "男"); printPerson(person); } private static void printPerson(Object obj){ if (obj instanceof Person) { //这里需要强制转换 Person person = (Person) obj; System.out.println(person); } } }
[code]Person{name='小明', age=10, sex='男'}
在java14中就可以这样写了:
[code] public static void main(String[] args) { Person person = new Person("小明", 10, "男"); printPerson(person); } private static void printPerson(Object obj){ if (obj instanceof Person person) { //可以在模式匹配时直接转换成实例 System.out.println(person); } else if (obj instanceof String str) { System.out.println(str); } }
[code]Person{name='小明', age=10, sex='男'}
有这样的特性以后,我们就可以在其中做一些其它事情了,比如使用操作符&&。比如:
[code] public static void main(String[] args) { Person person = new Person("小明", 10, "男"); printPerson(person); printPerson("小红"); } private static void printPerson(Object obj){ if (obj instanceof Person person && person.getAge() > 5) { //在这里就可以直接使用&&操作符 System.out.println(person); } else if (obj instanceof String person) { System.out.println(person); } }
[code]Person{name='小明', age=10, sex='男'} 小红
但是这里不能使用操作符||,因为操作符左边的表达式为false时不会造成短路,当执行到右边的表达式时变量还没有被定义。当然如果操作符||右边没有使用到强转后的变量是没有问题的。
总结
java14提供的这个特性我感觉非常棒,省去了一些多余的代码,提高了代码的健壮性。期待以后还会挖掘出更多的用法。
相关文章推荐
- JDK14的新特性:instanceof模式匹配的使用
- Java 14 instanceof 的模式匹配
- JDK14新特性之instanceof模式匹配
- java 设计模式 学习笔记 (14) 备忘录模式
- (14)多线程与并发库之java5同步集合类的应用【包含jdk1.5新特性 ConcurrentHashMap】
- C# 7.0 新特性3: 模式匹配
- Java与模式笔记(14)
- 模式匹配之常见匹配算法---SIFT/SURF、haar特征、广义hough变换的特性对比分析
- 字符串模式匹配中BF算法和KMP算法的java实现
- 快学Scala学习笔记及习题解答(12-14高阶函数、集合、模式匹配和样例类)
- (14)多线程与并发库之java5同步集合类的应用【包含jdk1.5新特性 ConcurrentHashMap】
- JAVA线程14 - 新特性:同步工具
- java正则表达式匹配模式[贪婪型、勉强型、占有型]
- Java-----正则表达式匹配模式[贪婪模式、勉强模式、占有模式]
- java学习之路 之 高级类特性2-关键字static、类变量、类方法、单例模式
- Java 正则表达式匹配模式(贪婪型、勉强型、占有型)
- KMP字符串模式匹配算法Java实现
- java实现字符串的一般和KMP模式匹配算法
- java 正则 块转义,忽略大小写,匹配换行模式,匹配先前匹配的文本(解释正则运行机制)
- KMP快速模式匹配的java实现