jdk17对比jdk8

Lambda表达式
    /**
     * Lambda表达式
     */
    private static void lambda(){
        // JDK8
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        list.forEach(n -> System.out.println(n));

        // JDK17
        List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
        //用到var.......
        list2.forEach((var n) -> System.out.println(n));
    }

 

Pattern Matching for instanceof
    /**
     * Pattern Matching for instanceof
     */

    private static void pattern(Object obj){
        // JDK8
        if (obj instanceof String) {
            String str = (String) obj;
            System.out.println(str.toUpperCase());
        } else {
            System.out.println(obj);
        }

        // JDK17
        if (obj instanceof String str) {
            System.out.println(str.toUpperCase());
        } else {
            System.out.println(obj);
        }
    }

 

新的集合操作API
    /**
     * 新的集合操作API
     * JDK8引入了Stream API,使得对集合的操作更加简洁和方便。JDK17在此基础上又增加了一些新的API,
     * 比如toList()和toSet()等,使得将Stream转换为List或Set变得更加简单。
     */

    private static void api(){
        // JDK8
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        int sum = list.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();

        // JDK17
        List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenList = list2.stream().filter(n -> n % 2 == 0).toList();
        Set<Integer> oddSet = list2.stream().filter(n -> n % 2 != 0).collect(Collectors.toSet());
    }

 

改进的Switch语句
    /**
     * 改进的Switch语句
     * JDK17引入了新的Switch语句,支持使用表达式作为条件,同时也支持使用Lambda表达式作为分支语句。
     */
    private static void newSwitch(String dayOfWeek){
        // JDK8
        switch (dayOfWeek) {
            case "MON":
            case "TUE":
            case "WED":
            case "THU":
            case "FRI":
                System.out.println("Weekday");
                break;
            case "SAT":
            case "SUN":
                System.out.println("Weekend");
                break;
            default:
                System.out.println("Invalid day");
        }

        // JDK17
        String dayType = switch (dayOfWeek) {
            case "MON", "TUE", "WED", "THU", "FRI" -> "Weekday";
            case "SAT", "SUN" -> "Weekend";
            default -> {
                System.out.println("Invalid day");
                yield "Invalid day";
            }
        };
    }

 

新的HTTP Client API
    /**
     * 新的HTTP Client API
     * JDK11引入了新的HTTP Client API,使得对HTTP请求的处理变得更加简单和方便。
     */

    private static void client() throws Exception{
        // JDK8
        // 使用第三方HTTP库

        // JDK17
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://www.example.com/"))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }

 

 

posted @ 2024-04-28 10:36  轻寒  阅读(76)  评论(0编辑  收藏  举报