JAVASE之初识动态代理

注解:

Annotation是一种代码级别的说明..JDK1.5及以后版本引入的一个特性.与类,接口,枚举是在同一个层次的

注释:注释是给开发人员阅读的,注解是给计算机提供相应信息的.

 

作用:

编译检查:通过代码里标识注解,让编译器能够实现基本的编译检查.:@Override

代码分析:通过代码里标识注解,对代码进行分析,从而达到取代xml目的

编写文档:通过代码里标识注解,辅助生成帮助文档对应的内容.

JDK提供的注解:

@Deprecated表示被修饰的方法已经过时.过时的方法不建议使用,但仍可以使用.一般被标记为过时的方法都存在不同的缺陷:安全问题,新的API取代

@OverrideJDK1.5表示抑制警告,被修饰的类或方法如果存在编译警告,将被编译器忽略

deprecation 忽略过时

rawtypes  忽略类型安全

Unused 忽略 不使用

Unchecked 忽略安全检查

Null 忽略空指针

All 忽略所有

@Deprecated 方法过期

@Override 复写父类方法,实现接口方法

@SuperWaring 抑制警告

 

类加载器:

类加载器是负责加在类的对象.class文件(硬盘)加载到内存生成Class对象.所有的类加载器都是java.lang.ClassLoader 的子类.

 

使用类class.getClassLoader()获得加载自己的类加载器.

类加载器加载机制:全盘负责委托机制

全盘负责:A类如果要使用B(不存在),A类加载器C必须负责加载B.

 

委托机制:A类加载器如果要加载资源B,必须询问父类加载是否加载,

如果加载,将直接使用,如果没有加载,自己再加载.

采用全盘负责委托机制 保证一个class文件只会被加载一次,形成一个Class对象.

注意:

如果一个class文件,被两个类加载器加载,将是两个对象.

自定义类加载,可以将一个class文件加载多次.

动态代理:

Java代理有jdk动态代理,cglib代理,jdk动态代理主要使用的是java反射机制(java.lang.reflect)

 

Proxy:

动态代理:程序运行时,使用JDK提供工具类(Proxy),动态创建一个类,此类一般用于代理.

代理类:  目标类,被代理的

动态代理的使用前提:必须有接口.

Object proxyObj=Proxy.newProxyInstance(参数1,参数2,参数3);

参数1:ClassLoader,负责将动态创建类,加载到内存.当前类 class.getClassLoader();

参数2:Class[] interfaces,代理类需要实现的所有接口(确定方法),被代理类实例.getClass().getInterfaces();

参数3:InvocationHandler,请求处理类,代理类不具有任何功能,代理类的每一个方法执行时,调用处理类invoke方法.

Invoke(OBject proxy,Method,Object[] args)

参数1:代理实例

参数2:当前执行的方法

参数3:方法实际参数.

 

动态代理原理的通俗理解(歌手,经纪人):

建立一个公共的接口,:歌手 public interface singer;

用具体的类实现接口,如张杰,是歌手所实现Singer,class MySinger implements Singer.

建立代理类,也就是经纪人,需要实现InvocationHandler,并重写invoke方法

这样当有事情时,要找张杰(具体类)的时候,就必须先到经纪人(代理类)那里处理,代理人在决定要不要与你见面(该方法要不要执行)

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值