Java 16 新玩法:instanceof 升级版,让类型检查更精准

简介: Java 16 新玩法:instanceof 升级版,让类型检查更精准

instanceof 这个关键词,主要用来判断某个对象是不是某个类的实例。

比如,有时候我们要处理一个类似这样的数据集

Map<String, Object> data = new HashMap<>();
data.put("key1", "aaa");
data.put("key2", 111);

这个 Map 中的 Value 值因为可能是不同的对象,所以定义的是 Object。这个时候,当我们 get 出来的时候,就需要去判断和转换之后再去处理。

比如,我们取出 key1value,然后截取一段字符串的操作,就需要这样写:

Object value = data.get("key1");
if (value instanceof String) {
  String s = (String) value;
  System.out.println(s.substring(1));
}

先判断获取的 value 是否是 String,再做强制类型转换,然后再对字符串进行操作。这是传统的写法,而在 Java 16 的增强之后,对于 instanceof 的判断以及类型转换可以合二为一了,所以改进后的写法可以如下:

Object value = data.get("key1");
if (value instanceof String s) {
  System.out.println(s.substring(1));
}

是不是简单不少呢?如果没用过的话,赶紧操作试试看吧!

Tips:该功能经历了 2 个 Preview 版本(JDK 14 中的 JEP 305、JDK 15 中的 JEP 375),最终定稿于 JDK 16 中的 JEP 394。

相关文章
|
1月前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
76 2
|
1月前
|
存储 Java 编译器
Java泛型类型擦除以及类型擦除带来的问题
泛型擦除是指Java编译器在编译期间会移除所有泛型信息,使所有泛型类型在运行时都变为原始类型。例如,`List&lt;String&gt;` 和 `List&lt;Integer&gt;` 在JVM中都视为 `List`。因此,通过 `getClass()` 比较两个不同泛型类型的 `ArrayList` 实例会返回 `true`。此外,通过反射调用 `add` 方法可以向 `ArrayList&lt;Integer&gt;` 中添加字符串,进一步证明了泛型信息在运行时被擦除。
46 2
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
50 5
|
1月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
100 5
|
1月前
|
SQL Java OLAP
java实现“数据平滑升级”
java实现“数据平滑升级”
44 2
|
1月前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
74 1
|
2月前
|
Java 编译器
Java“返回类型为 void 的方法不能返回一个值”解决
在 Java 中,如果一个方法的返回类型被声明为 void,那么该方法不应该包含返回值的语句。如果尝试从这样的方法中返回一个值,编译器将报错。解决办法是移除返回值语句或更改方法的返回类型。
260 5
|
2月前
|
设计模式 Java
Java“不能转换的类型”解决
在Java编程中,“不能转换的类型”错误通常出现在尝试将一个对象强制转换为不兼容的类型时。解决此问题的方法包括确保类型间存在继承关系、使用泛型或适当的设计模式来避免不安全的类型转换。
301 7
|
2月前
|
Java
Java 中锁的主要类型
【10月更文挑战第10天】