转载:猿天地 链接:http://cxytiandi.com/blog/detail/2196
java8都已经发布这么久了,一直没来得及使用,线上环境基本上是1.6,一下子升级的话还是有点危险,不过私下可以尝试下一些新的语法。
今天就简单的列出几种lambda的一些写法和之前的写法有什么不同。
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我是一个线程");
}
}).start();
//新方式
new Thread(() -> {
System.out.println("我是一个线程");
}).start();
我们可以看到,Runnable这个接口被() -> 代替了。 也不用重写run方法了。
List<String> names = Arrays.asList("张三", "张三丰" ,"张");
names.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
//新方式
names.sort((o1, o2) -> Integer.compare(o1.length(), o2.length()));
这边我们按名称字数的少到多排序
for (String name : names) {
System.out.println(name);
}
//新方式
names.forEach(System.out::println);
直接可以用forEach输出,是不是很方便呀。
下面我们介绍下构造方法的引用,上面的out::println是引用方法,下面是引用构造方法
public class Student {
private String name;
public Student(String name){
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
//循环创建Student对象
names.stream().map(Student::new).forEach( stu -> {
System.out.println(stu.getName());
});
String[] strs = "welcome from cxytiandi.com".split(" ");
Arrays.sort(strs, String::compareToIgnoreCase);
System.out.println(Arrays.toString(strs));
interface Person {
long getId();
default String getName() { return "cxytiandi.com"; }
}
class Teach implements Person {
public long getId() { return 42; }
public String getName() { return "猿天地"; }
}
public class StaticInterfaceMethods {
public static void main(String[] args) {
System.out.println(YuanTianDi.sayHello("World"));
}
}
interface YuanTianDi {
String hello();
static String sayHello(String key) {
return "Hello\t" + key;
}
}