有关网站开发的国外书籍,可口可乐网站建设,关键词推广优化,第一ppt课件免费下载官网挑战第 5 天 java反射List Set Map 区别Object 常用方法 java反射
定义#xff1a;
运行时动态获取类信息和调用方法的特性。
应用场景#xff1a;
JDBC数据库连接。框架如Hibernate和Struts等。
实现方式#xff1a;
通过四种方法获取Class对象#xff1a; Class.fo… 挑战第 5 天 java反射List Set Map 区别Object 常用方法 java反射
定义
运行时动态获取类信息和调用方法的特性。
应用场景
JDBC数据库连接。框架如Hibernate和Struts等。
实现方式
通过四种方法获取Class对象 Class.forName(“类的路径”)类名.class对象名.getClass()基本类型的包装类通过Type属性获取Class对象。
核心类
Class获取类和接口信息。Field获取属性信息和动态访问权限。Constructor获取构造方法信息和访问权限。Method获取方法信息。
优缺点
优点 运行时动态获取实例提高灵活性。可与动态编译结合。 缺点 性能较低因为需要解析字节码。破坏封装性可以访问私有方法和属性。
性能优化方案
使用setAccessible(true)关闭安全检查。缓存Class对象以加快多次实例化速度。使用ReflectASM工具类通过字节码生成加速反射。
List Set Map 区别
List
存储元素的顺序是有序的。可以包含重复的元素。允许元素引用相同的对象。
Set
不允许重复元素。元素自动去重不会有多个元素引用相同的对象。无序的但某些实现如LinkedHashSet和TreeSet可以保持元素的插入顺序或自然排序顺序。
Map
使用键值对存储数据。每个键最多只能映射到一个值。键不能重复但值可以重复。键通常使用String类型但也可以使用任何对象。Map不保证元素的顺序但某些实现如LinkedHashMap可以保持插入顺序。
Object 常用方法
clone方法
保护方法用于实现对象的浅复制。只有实现了Cloneable接口的类才能调用此方法否则会抛出CloneNotSupportedException。实现深拷贝需要成员变量也为引用类型并实现Cloneable同时重写clone方法。
finalize方法
与垃圾收集器相关用于判断对象是否可以被回收。当对象即将被垃圾回收器回收时由垃圾回收器调用此方法。
equals方法
用于比较对象的等价性。默认行为与相同即比较对象的内存地址通常需要在子类中重写。
hashCode方法
用于哈希查找通常在重写equals方法时也需要重写此方法。JDK 1.6和1.7默认返回随机数而JDK 1.8使用Marsaglia’s xorshift scheme算法生成随机数。
wait方法
与synchronized关键字配合使用使当前线程等待对象的锁。可以无限期等待或设置超时时间。等待期间线程进入睡眠状态直到被通知、被中断或超时。
notify方法
与synchronized关键字配合使用唤醒在此对象上等待的单个线程。
notifyAll方法
与synchronized关键字配合使用唤醒在此对象上等待的所有线程。
toString和getClass方法
toString方法用于返回对象的字符串表示通常需要在子类中重写。getClass方法用于获取对象的运行时类信息通常不需要讨论。