当前位置: 首页 > wzjs >正文

襄樊门户网站建设服装网站建设前期规划方案

襄樊门户网站建设,服装网站建设前期规划方案,中国建设银行分行网站,微信公众平台开发实例教程方法引用概述 方法引用(Method Reference)是 Java 8 引入的一种简洁的 Lambda 表达式写法。它允许我们直接引用已有的方法,而不必重复实现 Lambda 代码,使代码更加简洁、可读性更强。 方法引用的基本语法如下: 类名…

方法引用概述

方法引用(Method Reference)是 Java 8 引入的一种简洁的 Lambda 表达式写法。它允许我们直接引用已有的方法,而不必重复实现 Lambda 代码,使代码更加简洁、可读性更强。

方法引用的基本语法如下:

类名::静态方法名
对象名::实例方法名
类名::实例方法名
类名::new  // 构造方法引用

主要类型

  1. 引用静态方法
  2. 引用特定对象的实例方法//   需要形参和返回值类型一样
  3. 引用某个类的任意对象的实例方法
  4. 引用构造方法
  5. 引用数组的构造方法

注意事项:

  • 方法引用的目标必须是 函数式接口(Functional Interface),即仅包含一个抽象方法的接口,如 Supplier<T>, Function<T, R>, Consumer<T> 等。
  • 方法签名必须匹配 Lambda 表达式 的参数和返回类型。
  • 方法引用不会改变方法的执行方式,只是简化 Lambda 代码。

1. 引用静态方法

静态方法可以被方法引用直接调用,适用于方法签名匹配的情况。

示例:

import java.util.function.Function;public class StaticMethodReference {public static int square(int num) {return num * num;}public static void main(String[] args) {Function<Integer, Integer> function = StaticMethodReference::square;System.out.println(function.apply(5));  // 输出 25}
}

注意事项:

  • 被引用的方法必须是 static,否则无法使用 类名::方法名 方式引用。
  • Lambda 需要的参数列表和返回值必须匹配方法签名。

2. 引用其他类的成员方法

当一个对象的实例方法符合 Lambda 预期参数类型时,可以引用该对象的方法。

示例:

import java.util.function.Supplier;public class InstanceMethodReference {public String getMessage() {return "Hello, Method Reference!";}public static void main(String[] args) {InstanceMethodReference instance = new InstanceMethodReference();Supplier<String> supplier = instance::getMessage;System.out.println(supplier.get());  // 输出 "Hello, Method Reference!"}
}

注意事项:

  • instance::methodName 只能用于方法不带参数或参数匹配函数式接口的情况。
  • 适用于 Supplier<T>Consumer<T> 这类接口。

3. 引用本类或者父类的成员方法

如果方法在本类或父类中,可以直接用 thissuper 进行方法引用。

示例(本类方法):

import java.util.function.Function;public class ThisMethodReference {public int doubleValue(int num) {return num * 2;}public void execute() {Function<Integer, Integer> function = this::doubleValue;System.out.println(function.apply(10));  // 输出 20}public static void main(String[] args) {new ThisMethodReference().execute();}
}

示例(父类方法):

class Parent {public void greet() {System.out.println("Hello from Parent");}
}public class SuperMethodReference extends Parent {public void execute() {Runnable r = super::greet;r.run();  // 输出 "Hello from Parent"}public static void main(String[] args) {new SuperMethodReference().execute();}
}

注意事项:

  • 适用于 this::methodNamesuper::methodName
  • 适用于 RunnableConsumer<T> 等无参方法。
  • 静态方法中没有this、super等关键字

4. 引用类名的成员方法

如果 Lambda 表达式的第一个参数是调用方法的对象,则可以使用 类名::实例方法 形式。

示例:

import java.util.Arrays;
import java.util.List;public class ClassNameMethodReference {public static void main(String[] args) {List<String> list = Arrays.asList("apple", "banana", "cherry");list.forEach(System.out::println);  // 逐行打印字符串}
}

注意事项:

  • 适用于 Consumer<T>Function<T, R> 等。
  • 类名::方法名 形式适用于 list.forEach(System.out::println) 这种情况。

5. 引用构造方法

构造方法可以用 类名::new 进行引用。

示例:

import java.util.function.Supplier;class User {public User() {System.out.println("User created");}
}public class ConstructorReference {public static void main(String[] args) {Supplier<User> supplier = User::new;User user = supplier.get();  // 输出 "User created"}
}

注意事项:

  • 适用于 Supplier<T>(无参数构造)。
  • 适用于 Function<T, R>(有参数构造)。

6. 引用数组的构造方法

数组构造方法可以使用 类型[]::new 进行引用。

示例:

import java.util.function.IntFunction;public class ArrayConstructorReference {public static void main(String[] args) {IntFunction<int[]> arraySupplier = int[]::new;int[] arr = arraySupplier.apply(5);System.out.println("Array length: " + arr.length);  // 输出 "Array length: 5"}
}

注意事项:

  • 适用于 IntFunction<T[]> 形式。
  • 可以用于创建 int[]::newString[]::new 等。

结论

方法引用是 Lambda 表达式的简洁替代方案,使代码更具可读性。主要掌握以下几种方法引用:

  1. 类名::静态方法 引用静态方法。
  2. 对象::实例方法 引用特定对象的实例方法。
  3. 类名::实例方法 引用某个类的任意对象的实例方法。
  4. 类名::new 引用构造方法。
  5. 类型[]::new 引用数组构造方法。

关键点:

  • 适用于函数式接口。
  • 方法签名必须匹配。
  • 方法引用不会改变方法执行逻辑。


文章转载自:

http://7yo5qxvf.tpyjr.cn
http://QRm5E75M.tpyjr.cn
http://s3VcrY9C.tpyjr.cn
http://MfHv9ME9.tpyjr.cn
http://Y2J84Vx1.tpyjr.cn
http://UNwfL0yf.tpyjr.cn
http://yh8CnWU1.tpyjr.cn
http://K2rH99ui.tpyjr.cn
http://1t66jO98.tpyjr.cn
http://zPFBQksy.tpyjr.cn
http://RIiBWjv5.tpyjr.cn
http://2mtfb6EQ.tpyjr.cn
http://zloO0tJQ.tpyjr.cn
http://OTHlCktU.tpyjr.cn
http://8GOkJ6yJ.tpyjr.cn
http://gJ451JFO.tpyjr.cn
http://dOiPYB0S.tpyjr.cn
http://WnrRruCz.tpyjr.cn
http://mIxj7p8f.tpyjr.cn
http://xmMFOjKt.tpyjr.cn
http://hk6ap6jr.tpyjr.cn
http://UTBJBUTD.tpyjr.cn
http://GJVbjPt1.tpyjr.cn
http://5sE89VON.tpyjr.cn
http://8p8KxW5F.tpyjr.cn
http://pTSsfOTu.tpyjr.cn
http://PVE5HOQj.tpyjr.cn
http://aj5PChkt.tpyjr.cn
http://1ZRhMgvb.tpyjr.cn
http://yKQONCor.tpyjr.cn
http://www.dtcms.com/wzjs/638928.html

相关文章:

  • 中国联通网站备案管理系统如何做网站聚合页
  • 电商网站怎样做优化才最合理百度关键词seo排名
  • 国外网站为啥速度慢wordpress账号破解
  • 茶叶网站建设策划书贵阳设计公司
  • 英语网站 php源码四平网站建设服务
  • 一个专门做破解的网站网站中用特殊字体
  • 承接网站建设 优帮云广州网站开发技术
  • 网站建设推广专家服务google搜索引擎入口
  • 江门市专业做网站公司g宝盆网站建设优惠
  • asp门户网站系统建设银行确认参加面试网站
  • 制作化妆品网站局域网搭建wordpress怎么访问不了
  • UE4做购物网站音箱厂家东莞网站建设
  • 移动端网站提交提交wordpress绑定双域名
  • 广州做网站找酷爱网络wordpress获取主题路径
  • 建设网站需要多少钱淘宝seo是什么意思啊
  • 备案的域名拿来做别的网站建设 银行网网站
  • seo查询整站中国上海官网
  • 站长工具seo综合查询腾讯中国建设银行东营分行网站
  • 彩票网站有人做吗dedecms转换wordpress方法
  • 嘉兴网站制作套餐中国互联网协会是国企吗
  • 易企互联网站建设视频互联网推广选择隐迅推
  • 如何管理网站域名公司网站建设多少钱
  • 公司做网站需要哪些费用微信小程序开发工具手机版
  • ftp如何修改网站备案号2022年深圳在建工程查询
  • ppt模板下载网站有哪些手工制作代加工接单网
  • 展示型网站解决方案自建网站平台要多少钱
  • 美词网站建设品牌建设与营销的关系
  • 免费发群二维码的网站郑州电力高等专科学校电话
  • 网站建设业务员主动话术国外美容网站
  • 彩票网站开发制作软件wordpress search制作