双冒号(::)运算符在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条评论
点击登录参与评论