动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Java8新特性之方法引用

06-01 15:42 662浏览
举报 T字号
  • 大字
  • 中字
  • 小字

我们都知道Java8引入了lambda表达式,而方法引用是为了进一步简化lambda表达式,通过类名或者实例名与方法名的组合来直接访问到类或者实例已经存在的方法或者构造方法。方法引用使用**::来定义,::**的前半部分表示类名或者实例名,后半部分表示方法名,如果是构造方法就使用NEW来表示。

方法引用在Java8中使用方式相当灵活,总的来说,一共有以下几种形式:

  • 静态方法引用:ClassName::methodName;
  • 实例上的实例方法引用:instanceName::methodName;
  • 超类上的实例方法引用:supper::methodName;
  • 类的实例方法引用:ClassName:methodName;
  • 构造方法引用Class:new;
  • 数组构造方法引用::TypeName[]::new

下面来看一个例子:

public class MethodReferenceTest {

    public static void main(String[] args) {
        ArrayList<Car> cars = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Car car = Car.create(Car::new);
            cars.add(car);
        }
        cars.forEach(Car::showCar);

    }

    @FunctionalInterface
    interface Factory<T> {
        T create();
    }

    static class Car {
        public void showCar() {
            System.out.println(this.toString());
        }

        public static Car create(Factory<Car> factory) {
            return factory.create();
        }
    }
}


输出结果:

learn.MethodReferenceTest$Car@769c9116
learn.MethodReferenceTest$Car@6aceb1a5
learn.MethodReferenceTest$Car@2d6d8735
learn.MethodReferenceTest$Car@ba4d54
learn.MethodReferenceTest$Car@12bc6874

在上面的例子中使用了Car::new,即通过构造方法的方法引用的方式进一步简化了lambda的表达式,Car::showCar,即表示实例方法引用。

在动力节点在线的视频课程中有Java8新特性视频教程,里面对Java8的各个新特性都有详细的介绍和用法解析,想学习的小伙伴抓紧时间行动起来吧。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵124
程序员代码小兵124

99篇文章贡献336699字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消