Java中的->用法

->是lambda表达式,Java8新特性,它的作用是简化匿名函数

虽说我们可以不用这种写法,但还是需要了解->的作用,因为可能别人是这样写的;接下来我们通过几个例子了解一下。

例子:线程

1
2
3
4
5
6
7
8
9
10
//Before Java 8:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Before Java8 ");
}
}).start();

//Java 8 way:
new Thread( () -> System.out.println("In Java8!") ).start();

例子:排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Before Java 8
private void sortUsingJava7(List<String> names){
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
}

// Java 8 way:
private void sortUsingJava8(List<String> names){
Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
}

例子:监听器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Before Java 8:
JButton show = new JButton("Show");
show.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("without lambda expression is boring");
}
});


// Java 8 way:
show.addActionListener((e) -> {
System.out.println("Action !! Lambda expressions Rocks");
});

通过上面例子可以看到,->的作用就是将匿名函数用->代替,匿名函数如果有输入参数,比如compare(String s1, String s2),则用(s1,s2)来表示;如果没有输入参数,则用()来表示,然后->后面写处理结果。

总结公式:(输入参数)->(输出参数)

文章目录
  1. 1. ->是lambda表达式,Java8新特性,它的作用是简化匿名函数
  2. 2. 总结公式:(输入参数)->(输出参数)