C# 内部类与Lambda表达式用法详解
作者:做哈白日梦 发布时间:2022-07-13 05:54:11
目录
一、内部类
1.什么是内部类?
1.类作为形参和返回值:
2.内部类的几种形式
二、Lambda表达式(强调做什么,而不是以什么形式去做)
1.Lambda表达式的格式要求:
2.Lambda与匿名内部类的区别
1.省略模式
2.Lambda与匿名内部类的区别:
三、方法引用
1.方法的概述:
2.常见的方法引用方式:
3.方法引用的具体方式:
一、内部类
1.什么是内部类?
1.类作为形参和返回值:
抽象类作为形参和返回值:
通过多态的形式去传递抽象类作为形参的方法,方法的形参与返回值为抽象类名,则需要的是该抽象类的子类对象。
类名作为形参与返回值:方法的形参与返回值为类名时,则需要的是该类的对象。
接口名作为形参与返回值:方法的形参与返回值为接口名时,则需要的是该接口的实现类对象。
内部类的概述:
内部类里面访问特点是在外面的类需要访问里面类的时,是需要创建对象才能调用,里面的类则可以直接使用外面类的成员。
2.内部类的几种形式
1.成员内部类
注意事项:创建内部类的对象时,除了私有的内部类,定义为私有的类时,是需要外部类创建对象将其调用内部类的成员与方法,再在测试类里去创建外部类的对象,调用其方法。
2.局部内部类
局部内部类是需要在方法中去写的,主要格式跟成员内部类差不多。
匿名内部类(是局部内部类的一种格式,也需要在方法里面写)
当需要进行接口和抽象类的内部类时,则可以通过匿名内部类的方式,注意的是匿名内部类是一个相当于接口或抽象类的实现继承类的对象,所以可以直接通过赋值给一个接口,抽象名,通过这个直接调用内部类里面的成员。
当在开发中的使用时:
这里首先创建了一个对象,创建对象后调用其中的方法,返回值是一个接口,所以需要创建一个实现接口类去重写接口方法,并调用。但匿名内部类则减少了很多步骤,直接在测试类中通过匿名内部类的方式,对接口里面的方法进行重写,到达简便。
二、Lambda表达式(强调做什么,而不是以什么形式去做)
1.Lambda表达式的格式要求:
注意事项:Lambda表达式的前提条件:
有一个接口
接口中有且只有一个抽象方法。
例子:
说明这里在下面写了一个方法,在调用方法时候是将返回Lambda的表达式中进行运行最后又返回回去,执行下一步操作。
2.Lambda与匿名内部类的区别
1.省略模式
参数可以省略(多个参数时需都省略),如果参数只有一个时候,也可以省略小括号,同时如果代码块语句只有一条,也可以省略大括号和分号(注意事项:如果有return时,return也要省略)。
注意事项:
2.Lambda与匿名内部类的区别:
三、方法引用
1.方法的概述:
在方法引用其实是Lambda的孪生兄弟,通过方法引用的形式进行,方法引用符为"::",在通过方法名(System.out::println)的形式,其实就是写好的Lambda表达式中参数再次赋值并调用的。所以方法引用主要是运用到已写好的Lambda表达式的二次运用。
2.常见的方法引用方式:
3.方法引用的具体方式:
引用对象的实例方法
说明:在引用对象的实例方法的情况是在Lambda表达式与其中类里面所执行的操作相同所以可以运用替代,在替代时,它的形式参数全部传递给该方法作为参数,格式为"对象名::方法名"。
引用类的实例方法
说明:在引用类的实例方法中时,通过”类名::方法名“的格式要求进行
引用构造器(引用构造方法)
说明:在引用构造方法时候,是通过“类名::new”的格式进行,当Lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数。同时所传递的参数通过类名进入到具有两个参数的构造方法中去。
引用类方法(引用类的静态方法)
说明:当需要引用类方法时,有”类名::静态方法名“的格式进行修饰同时,Lambda表达式被类方法替代时候,他的形式参数全部传递给静态方法作为参数。
来源:https://blog.csdn.net/weixin_46870007/article/details/120262279


猜你喜欢
- 分页是Java Web项目常用的功能,昨天在Spring MVC中实现了简单的分页操作和搜索分页,在此记录一下。使用的框架为(MyBatis
- 本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下:使用注解之前要开启自动扫描功能其中base-package为需要扫描的包(
- 提出问题我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来。解决方案利用反射机制,根据对象来寻
- 首先在xml文件添加Spinner控件:<Spinner &n
- 前言倒计时功能在游戏中一直很重要, 不管是活动开放时间,还是技能冷却。 本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束
- 记录Java执行groovy脚本的两种方式,简单粗暴:一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内
- 这篇文章主要介绍了设计模式在Spring框架中的应用汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- Android Support Annotations &
- 我们使用Jmeter测试同学的网站时,就会出现网站无法访问,403等错误。An error occurred.Sorry, the page
- 前言最近在学习Spring Boot结合Redis时看了一些网上的教程,发现这些教程要么比较老,要么不知道从哪抄得,运行起来有问题。这里分享
- 本文实例为大家分享了Android实现简单计时器的具体代码,供大家参考,具体内容如下布局在res/layout 下进行布局<?xml
- 关于UIToolbarToolBar工具栏是视图View的属性,可以在工具栏上添加工具栏按钮Bar Button Item(可以是自定义的C
- object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和
- 自定义log4j日志文件命名规则项目中的日志需要采用一致的命名规范和文件规范,命名规则为:项目模块标识_index_日期时间_日志级别.lo
- 下面通过代码给大家分享下依赖注入框架Autofac的使用,具体如下所示: Autofac是一款IOC框架,比较于其他的IOC框架,
- Spring AOP后置通知修改响应httpstatus1.定义Aspect/** * 响应体切面 * 后置通知修改httpstatus *
- Java中提供了画笔,可以使用画笔做出界面上的任何东西
- 本文实例为大家分享了java实现发送邮箱验证码的具体代码,供大家参考,具体内容如下添加依赖<!-- 邮箱验证码 https://mvn
- 本文实例讲述了Android编程之ICS式下拉菜单PopupWindow实现方法。分享给大家供大家参考,具体如下:运行效果截图如下:右边这个
- 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况