JDK17之前在代码中定义json类型字符串,是比较麻烦或者说不美观的,里面包含了各种转义字符,不方便读,且不美观。如下
- public void before17() {
- String jsonText = "{\n" +
- " \"name\": \"二狗子\",\n" +
- " \"age\": 18,\n" +
- " \"address\": \"北京\"\n" +
- "}";
- System.out.println(jsonText);
- }
JDK17新增文本块功能,完美的解决了这个问题,现在定义json字符串就比较方便且美观了,如下
- public void now17() {
- String jsonText = """
- {
- "name": "二狗子",
- "age": 18,
- "address": "北京"
- }
- """;
- System.out.println(jsonText);
- }
老的用法就不展示了,应该没有不熟的吧。。。来吧,展示新的用法
2.1 yield 关键字实现返回值
- private static void switchReturn1(Case case) {
-
- String returnText = switch (case) {
- case case1:
- yield "这是case1";
- case case2:
- yield "这是case2";
- default:
- yield "不知道是啥case";
- };
-
- System.out.println(returnText);
-
- }
2.2 可以使用 莱姆他表达式了
- private static void switchReturn2(Case case) {
- String returnText = switch (case) {
- case case1 -> "这是case1";
- case case2 -> "这是case2";
- default -> "不知道是啥case";
- };
- System.out.println(returnText);
- }
instanceof最常用的是用来判断Object类型,然后强转具体类型,JDK17之前写法
- private static void before17 (Object obj) {
- if (obj instanceof Stuent) {
- Stuent stuent = (Stuent) obj;
- System.out.println("学生姓名是:" + stuent.getName);
- }
- }
JDK17 更加简化了,就可以写成下面这种,少了一步强转
- private static void before17 (Object obj) {
- if (obj instanceof Stuent stuent) {
- System.out.println("学生姓名是:" + stuent.getName);
- }
- }
之前Stream转换成List,需要使用Collectors.toList(),代码非常冗长,如下
- private static void before17() {
- Stream
stream = Stream.of("a", "b", "c"); - List
stringList = stream.collect(Collectors.toList()); - for(String s : stringList) {
- System.out.println(s);
- }
- }
JDK17就比较简单了
- private static void before17() {
- Stream
stream = Stream.of("a", "b", "c"); - List
stringList = stream.toList(); - for(String s : stringList) {
- System.out.println(s);
- }
- }
以上就是自认为比较实用的更新