欢迎访问宙启技术站
智能推送

Java中的lambda表达式和方法引用

发布时间:2023-06-16 15:15:21

Java 8引入了lambda表达式和方法引用,这使得Java编程更加简洁和便捷。Lambda表达式是一个匿名函数,可以作为参数传递到方法中或被赋值给变量。方法引用则提供了一种简洁的方式来引用已存在的方法。

Lambda表达式

Lambda表达式由参数列表、箭头符号和方法体组成。举个例子,以下是一个使用lambda表达式的示例:

List<String> names = new ArrayList<>();

names.add("Tom");

names.add("Jerry");

names.add("Spike");

names.forEach(name -> System.out.println(name));

以上代码使用了lambda表达式来输出names列表中的每一个元素。箭头符号左侧的参数列表包含了方法参数,右侧是方法体。Lambda表达式非常简洁,可以减少冗余代码。

Lambda表达式可用于各种情况下。例如在集合类中使用:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.stream().forEach(number -> System.out.println(number));

通过使用stream()可以对集合中的元素进行操作。并且可以配合其他的lambda表达式一起使用,例如排序:

numbers.sort((n1, n2) -> n1.compareTo(n2));

numbers.forEach(System.out::println);

以上代码排序并输出集合内所有元素。

方法引用

方法引用提供了一种非常简洁的方式来引用已经存在的方法。它有多种形式,以下是一些例子。

静态方法引用:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.stream().forEach(System.out::println);

以上代码输出集合中的每一个元素。

实例方法引用:

public class Person {

    String name;

    int age;

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public String getName() {

        return name;

    }

}

List<Person> people = Arrays.asList(

        new Person("Tom", 25),

        new Person("Jerry", 26),

        new Person("Spike", 27)

);

people.stream().map(Person::getName).forEach(System.out::println);

以上代码从集合中获取每一个Person对象的名字,并输出到控制台上。

构造方法引用:

public class Person {

    String name;

    int age;

    public Person() {

        this.name = "Unknown";

        this.age = 0;

    }

}

Supplier<Person> supplier = Person::new;

Person p = supplier.get();

以上代码实例化一个Person对象。

总结

Lambda表达式和方法引用是Java 8新增的非常强大的特性,它们使得Java编程更加简洁、易读和易写。在函数式编程中,Lambda表达式特别有用,通过它可以轻松地编写匿名函数,简化代码。而方法引用则更加便捷,可以大大减少代码重复性。