码迷,mamicode.com
首页 > 其他好文 > 详细

JDK8特性 操作符:: 方法引用 静态方法 实例方法 构造方法

时间:2020-04-19 18:02:50      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:void   对象   rest   rri   lis   idt   class   ext   构造方法   

JDK8中的操作符::可以调取方法引用

Collections.sort()方法为例

/**
 * 静态方法引用
 * 实例方法引用
 * 构造方法引用
 *
 */
public class MethodTest {
    public static List<Box> list;

    static {
        list = new ArrayList<>();
        for (int i = 1; i <= 5; i ++) {
            list.add(
                    new Box(
                            new Random().nextInt(10) + 1,
                            new Random().nextInt(10) + 1,
                            new Random().nextInt(10) + 1
                    )
            );
        }
        System.out.println(list);
    }

    public static void main(String[] args) {
        // 匿名内部类实现
        Collections.sort(list, new Comparator<Box>() {
            @Override
            public int compare(Box o1, Box o2) {
                return o1.getVolume() - o2.getVolume();
            }
        });
        System.out.println(list);

        // Lambda实现
        Collections.sort(list, (o1, o2) -> o1.getVolume() - o2.getVolume() );
        System.out.println(list);

        // 静态方法引用实现
        Collections.sort(list, Box::compareStatic);
        System.out.println(list);

        // 实例方法引用实现
        Box box = new Box();
        Collections.sort(list, box::compareInstance);
        System.out.println(list);

        // 构造方法引用 (实例化对象)
        GetBox getBox = Box::new;
        Box box1 = getBox.get(5, 10, 15);
        System.out.println(box1);
    }
}

interface GetBox {
    Box get(int width, int height, int length);
}

JDK8特性 操作符:: 方法引用 静态方法 实例方法 构造方法

标签:void   对象   rest   rri   lis   idt   class   ext   构造方法   

原文地址:https://www.cnblogs.com/esrevinud/p/12732261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!