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版,主要考察栈的使用,供大家参考,具体内容如下主要思路如下: do { if(当前位置可通过) {
- Mybatis无法获取带有下划线前缀的字段的值今天下面,把几张表里的字段都加了前缀,如 article_id,article_title,a
- 本文最终结果大概是这样的,使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框
- 本文实例为大家分享了C#使用Socket实现本地多人聊天室的具体代码,供大家参考,具体内容如下【脚本一:Server端】使用本机地址:127
- 本篇文章主要介绍了java自动生成编号的实现,分享给大家,具体如下/** * 自动生成编号格式:yyMM+四位流水号 */ @Reques
- 1.线索化二叉树的介绍将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树.问题分析:1.当我们对上面的二叉树进行中序遍历时
- 本文实例为大家分享了Android使用Retrofit上传文件的具体代码,供大家参考,具体内容如下一、封装RetrofitManagerpu
- 注意:页面分别拖拽一个FileUpload、Button1、Label1、GridView控件,并新建一个UploadedExcel文件夹D
- 本文实例为大家分享了android实现选项卡功能,通过计算偏移量,设置tetxview和imageView的对应值,一些color的值读者自
- 这篇文章主要介绍了springboot如何使用AOP做访问请求日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- ArrayList和LinkedList区别、扩容机制及底层实现ArrayListArrayList的底层实现为数组存储在内存中,线程不同步
- 介绍:上篇给大家介绍了ssm多模块项目的搭建,在搭建过程中spring整合springmvc和mybatis时会有很多的东西需要我们进行配置
- 读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.R
- 目前常用的ORM框架有 Mybatis(batis)、MybatisPlus,Hibernate、Jpa等几个框架,今天就简单介绍一下搭建M
- 企业级的系统和我们平常桌面、手机上运行的软件有着很重要的区别,其中比较重要的一点就是环境(包括第三方的系统的不同接口以及各系统的不同版本、安
- 本文实例讲述了Android编程实现滑动按钮功能。分享给大家供大家参考,具体如下:首先效果图:然后是分别建立三个文件,第一个是main.cl
- java arrayList遍历的四种方法及Java中ArrayList类的用法package com.test;import java.u
- 异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题。1
- 前言在上一章节Spring和Mybatis整合的原理详解中有写到Spring和MyBatis整合时用到的Bean扫描是Spring本身提供的
- Spring Security 基本介绍这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档我就只说下Sprin