数据结构 反射、枚举 + Lambda的使用

反射
反射(reflection)机制是在 运行状态中, 对于任意一个类,都能够知道这个类的 所有属性和方法对于任
意一个对象,都能够 调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种 动态获取信
息以及动态调用对象方法的功能称为java语言的反射(reflection)机制
以下了6点很重要:
数据结构 反射、枚举 + Lambda的使用_第1张图片
树化需满足的条件:
(考得多) 查找成功的平均长度:先用哈希函数算这个数在哪个下标,如果在就是1,如果那个下标已经有值了,就接着找,查找次数跟着增加。长度:各个查找次数相加的和除以数据的个数
查找不成功的平均长度:比如找1,没找到,那就看找1所在的下标一直到第一个后面遇到的空格,一共几次就是1没有找到的次数。长度:所有有没有数据的次数加起来的和除以数组的长度
数据结构 反射、枚举 + Lambda的使用_第2张图片
反射相关的类(重要)
数据结构 反射、枚举 + Lambda的使用_第3张图片
Class类中的相关方法
1.(重要)常用获得类相关的方法
数据结构 反射、枚举 + Lambda的使用_第4张图片
2.(重要)常用获得类中属性相关的方法(以下方法返回值为Field相关)
数据结构 反射、枚举 + Lambda的使用_第5张图片
3.(了解)获得类中注解相关的方法
数据结构 反射、枚举 + Lambda的使用_第6张图片
4.(重要)获得类中构造器相关的方法(以下方法返回值为Constructor相关)
数据结构 反射、枚举 + Lambda的使用_第7张图片
5.(重要)获得类中方法相关的方法(以下方法返回值为Method相关)
数据结构 反射、枚举 + Lambda的使用_第8张图片
获得Class对象的三种方式
在反射之前,我们需要做的第一步就是先拿到当前需要反射的类的Class对象,然后通过Class对象的核心方法,达
到反射的目的
第一种,使用 Class.forName("类的全路径名"); 静态方法。
前提:已明确类的全路径名。
数据结构 反射、枚举 + Lambda的使用_第9张图片
第二种,使用 .class 方法。
说明:仅适合在编译前就已经明确要操作的 Class
第三种,使用类对象的 getClass() 方法
反射的使用(具体代码看PDF文件)
所有和反射相关的包都在 import java.lang.reflect 包下面。
反射优点和缺点
优点:
1. 对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法
2. 增加程序的灵活性和扩展性,降低耦合性,提高自适应能力
3. 反射已经运用在了很多流行框架如:Struts、Hibernate、Spring 等等。
缺点:
1. 使用反射会有效率问题。会导致程序效率降低。
2. 反射技术绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂 。

枚举的使用(看PDF课件上的例子)
数据结构 反射、枚举 + Lambda的使用_第10张图片
枚举是 java.lang.Enum 的子类,也就是说,自己写的枚举类,就算没有显示的继承 Enum ,但是其默认继承了
这个类。
1、switch语句
2、常用方法
Enum 类的常用方法
数据结构 反射、枚举 + Lambda的使用_第11张图片
枚举的构造方法默认是私有的!
枚举不可继承!
不能通过反射获取枚举类的实例!

Lambda表达式
视频和PDF文件还没看

你可能感兴趣的:(数据结构,java,开发语言)