双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。
官方文档中将双冒号的用法分为了以下几类:
1、静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
2、对象的实例方法引用语法:instancename::methodname 例如:System.out::println
3、对象的超类方法引用语法: super::methodname
4、类构造器引用语法: classname::new 例如:ArrayList::new
5、数组构造器引用语法: typename[]::new 例如: String[]:new
下面是几个具体的示例:
1、静态方法语法使用例子:
public class Demo {
public void test() {
List<String> list = Arrays.asList("aaaa", "bbbb", "cccc");
//静态方法语法ClassName::methodName
list.forEach(Demo::print);
}
public static void print(String content){
System.out.println(content);
}
}2、类实例方法语法使用例子:
public class Demo {
public void test() {
List<String> list = Arrays.asList("aaaa", "bbbb", "cccc");
//对象实例语法instanceRef::methodName
list.forEach(new Demo()::print);
}
public void print(String content){
System.out.println(content);
}
}3、类构造器语法使用例子:
public class Example {
public void test() {
InterfaceExample com = Example::new;
Example bean = com.create();
System.out.println(bean);
}
}
interface InterfaceExample{
Example create();
}

0条评论
点击登录参与评论