反射
反射是在运行状态中,动态获取类信息,以及动态调用对象的方法的功能叫做反射机制。在JDBC,Servlet,SpringIOC中
优点:能够灵活的创建代码,动态执行方法访问属性。
缺点:破坏了封装性,忽略权限检测
equals和hashcode
equals用于比较两个对象是否相等,而hashcode主要用于查找
-
equals相同则hashcode一定相同,反之则不确定,只能说明二者的对象在同一个散列结构中
-
重写equals一定要重写hashcode方法,以下是判断两个对象的过程
解释
由于hashcode()返回的是一个对象的内存地址,而不同的对象的地址一定不相同,不重写hashcode永远无法保证两个equal相同的对象放入同一个区域,会导致对象数量不一致的问题
Java四种引用类型
-
强引用:new对象,始终处于可达状态,并且不会被垃圾回收,是内存泄漏的一种原因
-
软引用:softReference,当系统内存不足时会被回收
-
弱引用:GC时,不管内存是否够用都会被回收,Threadlocal基于弱引用解决内存泄漏
-
虚引用:不能单独使用,会和引用队列结合使用,作用是跟踪对象被垃圾回收的状态
注解
介绍
一种特殊的接口,代码中的一个特殊标注,用于在编译,类加载,运行时进行解析和使用,并执行相应的方法
本质
继承了Annotation接口,其具体实现类是JDK代理类生成类,通过反射获得,返回了一个$Proxy1对象,并且调用代理对象自定义注解方法
分类
-
内置注解:Java内部已经有的注解,可以直接使用例如@Override,@SuppressWarnings
-
元注解:用来定义注解的注解,其中包含@Documented,@Retention,@Target等