← 返回首页

Java新特性概览:现代Java的演进

📂 java ⏱ 2 min 308 words

Java新特性概览:现代Java的演进

概述

Java从8开始引入了许多现代特性,包括Lambda表达式、Stream API、Optional类等。这些特性让Java代码更加简洁、易读和函数式。

1. Lambda表达式

import java.util.*;

public class LambdaDemo {
    public static void main(String[] args) {
        List<String> languages = Arrays.asList("Java", "Python", "C++", "JavaScript");

        // Lambda写法
        languages.sort((a, b) -> a.compareTo(b));

        // 方法引用
        languages.sort(String::compareTo);

        // 遍历
        languages.forEach(lang -> System.out.println(lang));
    }
}

2. Stream API

import java.util.*;
import java.util.stream.*;

public class StreamDemo {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 过滤、转换、收集
        List<Integer> result = numbers.stream()
            .filter(n -> n % 2 == 0)
            .map(n -> n * 2)
            .collect(Collectors.toList());

        System.out.println(result);  // [4, 8, 12, 16, 20]

        // 聚合操作
        int sum = numbers.stream()
            .filter(n -> n > 5)
            .mapToInt(Integer::intValue)
            .sum();

        System.out.println("Sum: " + sum);

        // 分组
        Map<Boolean, List<Integer>> grouped = numbers.stream()
            .collect(Collectors.partitioningBy(n -> n % 2 == 0));
    }
}

3. Optional类

import java.util.Optional;

public class OptionalDemo {
    public static void main(String[] args) {
        Optional<String> optional = Optional.of("Hello");

        optional.ifPresent(value -> System.out.println(value));

        String value = optional.orElse("Default");

        Optional<Integer> length = optional
            .map(String::length)
            .filter(len -> len > 3);

        System.out.println(length.orElse(0));
    }
}

4. var局部变量

public class VarDemo {
    public static void main(String[] args) {
        var name = "Hello";
        var number = 42;
        var decimal = 3.14;
        var list = new ArrayList<String>();

        System.out.println(name);
        System.out.println(number);
    }
}

5. Record类

public record Point(int x, int y) {
}

public record User(String name, String email, int age) {
    public boolean isAdult() {
        return age >= 18;
    }
}

public class RecordDemo {
    public static void main(String[] args) {
        Point point = new Point(10, 20);
        System.out.println(point.x());

        User user = new User("John", "john@example.com", 25);
        System.out.println(user.isAdult());
    }
}

6. switch表达式

public class SwitchDemo {
    public static void main(String[] args) {
        String day = "MONDAY";

        String type = switch (day) {
            case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> "工作日";
            case "SATURDAY", "SUNDAY" -> "周末";
            default -> "未知";
        };

        System.out.println(day + "是" + type);
    }
}

最佳实践

  1. 使用Lambda:简化匿名类
  2. 使用Stream:函数式数据处理
  3. 使用Optional:避免NullPointerException
  4. 使用var:简化局部变量声明
  5. 使用Record:定义不可变数据类

总结

Java新特性让语言更加现代化和简洁,掌握Lambda、Stream、Optional等特性,可以编写出更加优雅和高效的代码。