亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java 8 方法引用::: 语法与四大引用类型

方法引用语法

使用 :: 分隔类/对象与方法名,将方法作为值传递,替代单纯转发的 Lambda。

四大引用类型

类型语法Lambda 等价形式示例
静态方法引用ClassName::staticMethod(args) -> ClassName.staticMethod(args)Integer::parseInt
实例方法引用(特定对象)instance::method(args) -> instance.method(args)System.out::println
实例方法引用(任意对象)ClassName::method(obj, args) -> obj.method(args)String::compareToIgnoreCase
构造器引用ClassName::new(args) -> new ClassName(args)ArrayList::new

实战示例

1. 静态方法引用

List list = Arrays.asList("3", "1", "2");
list.sort(Integer::parseInt);  // 等价 (a,b) -> Integer.parseInt(a) - Integer.parseInt(b) 但需注意语义
// 更准确:按数值排序
list.stream().map(Integer::parseInt).sorted().forEach(System.out::println);

2. 特定对象实例方法引用

List names = Arrays.asList("Mahesh", "Suresh", "Ramesh");
names.forEach(System.out::println);  // 等价 name -> System.out.println(name)

3. 任意对象实例方法引用

String[] arr = {"Bob", "Alice", "Charlie"};
Arrays.sort(arr, String::compareToIgnoreCase);  // (a,b) -> a.compareToIgnoreCase(b)

4. 构造器引用

// 无参构造
Supplier> supplier = ArrayList::new;
List list = supplier.get();

// 有参构造(函数式接口参数匹配)
Function> listFactory = ArrayList::new;  // 需 ArrayList 有 String 构造器,实际无,仅示意
// 正确示例:
Function arrayFactory = int[]::new;
int[] arr = arrayFactory.apply(5);  // new int[5]

数组构造器引用

// 创建二维数组工厂
Function matrixFactory = String[]::new;
String[] row = matrixFactory.apply(3); // new String[3]

注意事项

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. 精通 Java 接口:概念、实现与最佳实践
  3. 精通 Java Try-With-Resources:自动资源管理详解
  4. Java 注解详解:类型、放置位置与实战示例
  5. Java 注解类型完全指南:预定义、自定义与元注解
  6. Java String length() 方法:获取字符串长度(示例)
  7. 精通 Java String.indexOf():定位子字符串与实战示例
  8. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  9. 精通 Java String compareTo():语法、用例与实战示例
  10. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  11. 精通 Java String.endsWith():检查字符串后缀(示例)
  12. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解