JAVA 8 双冒号'::' 关键字的用法
2019-05-03 本文已影响0人
爱宝宝n
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
大家一定很少用到java8中的双冒号:“::”;双冒号是java8中Lambda表达式的一种表达方式,方法名的后面没有括号“()”,下面简单介绍下它的用法:
先举几个例子大家 看下:
例1.输出十个随机数:
一般方法
Random random = new Random();
for (int i =0;i<10;i++){
System.out.println(random.nextInt());
}
使用::随机输出十个随机数:
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);
例2.循环输出数组:
一般方法
public static void main(String[] args) {
List<String> a1 = Arrays.asList("a", "b", "c");
for (String a : a1) {
printValur(a);
}
a1.forEach(x -> MainTest.printValur(x));
}
public static void printValur(String str) {
System.out.println("print value : " + str);
}
使用使用::
public static void main(String[] args) {
List<String> a1 = Arrays.asList("a", "b", "c");
a1.forEach(MainTest::printValur);
Consumer<String> consumer = MainTest::printValur;
a1.forEach(x -> consumer.accept(x));
}
public static void printValur(String str) {
System.out.println("print value : " + str);
}
上上面例子中,我可以看书使用::的代码更加的简介好看,
其实呢,双冒号就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下,双冒号运算就是Java中的方法引用;
Java 8 中我们可以通过 ::
关键字来访问类的构造方法,对象方法,静态方法。
例如:
表达式:
person ->person.getAge();
可以替换为
Person::getAge
表达式:
()-> new HashMap<>();
可以替换为
HashMap::new
结语:
双冒号,简介方便,易于书写且好看,建议在能使用的地方都使用哦,慢慢就可以熟悉了。