编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> Web前端 -> 类加载器&注解&动态代理 -> 正文阅读
 

[Web前端]类加载器&注解&动态代理[第1页]

一、类加载器
1.什么是类加载器,作用是什么?
类加载器就加载字节码文件(.class)
2.类加载器种类
(1)BootStrap:引导类加载器:加载都是最基础的文件
(2)ExtClassLoader:扩展类加载器:加载都是基础的文件
(3)AppClassLoader:应用类加载器:三方jar包和自己编写java文件
怎么获得类加载器?
ClassLoader字节码对象.getClassLoader();
二、注解@xxx
1什么是注解,注解作用?
注解就是符合一定格式的语法
注释:在阅读程序时清楚给程序员看的
注解:给jvm看的,给机器看的
@Override:帮助开发人检查是否覆盖父类的方法正确
2.注解的类型
基本类型,string,枚举类型,注解类型,Class类型,以上类型的一维数组
3.解析使用了注解的类
元注解:代表修饰注解的注解,作用:限制定义的注解的特性
@Retention
SOURCE:注解在源码级别可见
CLASS:注解在字节码文件级别可见
RUNTIME:注解在整个运行阶段都可见
@Target
代表注解修饰的范围,类上使用,方法上使用,字段上使用
FIELD;字段上可用此注解
METHOD:方法上可以用此注解
TYPE:类、接口上可以使用此注解

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
	String name();//注解的属性
	int age()default 20;
	//String value();
}
public class MyAnnoTest {
	@MyAnno(name = "zhangsan")
	//@MyAnno("xxx")
	public void show(String str){
		System.out.println("show running.....");
	}
}
class MyAnnoParser{
	public static void main(String[] args) throws NoSuchMethodException, SecurityException{
		//解析show方法上面的@MyAnno
		//直接目的是获得show方法上的参数
		//获得show方法的字节码对象
		Class clazz=MyAnnoTest.class;
		Method method=clazz.getMethod("show",String.class);
		MyAnno annotation=method.getAnnotation(MyAnno.class);
		//获得注解上的属性值
		System.out.println(annotation.name());
		System.out.println(annotation.age());
		//根据业务需求写逻辑代码
	}
}
自实现测试
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest {
}
public class MyTestRarster {
	public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException{
		Class clazz=TestDemo.class;
		//获得所有的方法
		Method[] methods=clazz.getMethods();
		if(methods!=null){
			for(Method method:methods){
				//获得注解使用@MyTest的方法
				boolean annotationParesent=method.isAnnotationPresent(MyTest.class);
				if(annotationParesent){
					//该方法使用了mytest注解
					method.invoke(clazz.newInstance(),null);
				}
			}
		}
	}
}
public class TestDemo {
	@Test
	public void test1(){
		System.out.println("test running...");
	}
	@MyTest
	public void test2(){
		System.out.println("test2 running...");
	}
}

注意:JDK的Proxy方式实现的动态代理  目标对象必须有接口  没有接口不能实现jdk版动态代理

public interface TargetInterface {
	public void method1();
	public String method2();
	public int method3(int x);
	 
}
public class Target implements TargetInterface{
	public void method1(){
		System.out.println("method1 running");
	}
	@Override
	public String method2() {
		System.out.println("method2 running....");
		return "method2";
	}
	@Override
	public int method3(int x) {
		return x;
	}
}
public class ProxyTest2 {
	public static void main(String[] args) {
		Target target=new Target();
		//动态创建代理对象
		TargetInterface proxy=(TargetInterface)Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
			@Override
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				//反射知识
				Object invoke=method.invoke(target, args);//目标对象的响应的方法
				return invoke;
			}
		});
		proxy.method1();//调用invoke
}
}

阅读全文
版权声明:本文为博主原创文章,未经博主允许不得转载。
本文已收录于以下专栏:

发表评论
HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它
相关文章推荐
基础加强:类加载器 ---注解 ---动态代理(装饰设计模式)
基础加强 1.类加载器 2.注解 3.动态代理(装饰设计模式) 1.类加载器,作用? 见图1,2  怎么获取类加载器?(重点)      ClassLoader  字节码对象.getCla...
qq_37905269 2017-06-03 21:12 82 注解、泛型、类加载器、动态代理
------- android培训、java培训、期待与您交流! ---------- 5、注解:jdk1.5的新特性;未来的开发模式基本都是基于注解的;是非常重要的知识点;比枚举更重要; ...
iender 2014-07-09 14:40 276 框架学习前基础加强 泛型高级,注解,反射(泛型&注解)应用案例,IOC,Servlet3.0,动态代理,类加载器
泛型 1. 泛型类 :具有一个或多个类型变量的类,称之为泛型类!   class A { }   2. 在创建泛型类实例时,需要为其类型变量赋值   A a = new A();   * 如果创建实例...
opopopwqwqwq 2016-05-11 01:39 2289 【JavaWeb-14】代理Proxy、动态代理、AOP编程思想、注解、元注解、类加载器
1、代理的实现。写一个接口,让目标类和代理类都实现这个接口,并且在代理类中引用目标类,我们在实例化目标类的时候,把目标类的实例当做参数传递给代理类,在代理类里面代替目标类进行操作。——我们在使用的时候...
wsb200514 2016-09-27 23:46 586 JavaSE--- 类加载器、反射、动态代理
11 反射 11.1
Xw_Classmate 2015-09-27 13:43 299 java基础加强(反射、内省、BeanUtils工具类、类加载器、动态代理)
------- android培训、java培训、期待与您交流! ---------- 反射:就是把java类中的各种成分映射成相应的java类。 1.获取类的字节码:     String ...
chq497130800 2012-12-21 14:55 311 黑马程序员_java高新(四)_类加载器、动态代理
--------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- -----------------...
u014696856 2014-04-15 22:04 450 Java基础进阶_day18_(类加载器,反射,动态代理)
类加载器 反射 动态代理
L631106040120 2017-04-15 23:36 92 Java基础进阶_day18_(类加载器,反射,动态代理)
Java基础进阶_day18_(类加载器,反射,动态代理)
L631106040120 2017-05-16 12:39 322 动态代理与类加载器
l  Java提供了一个Proxy类,调用它的newInstance方法可以生成某个对象的代理对象,使用该方法生成代理对象时,需要三个参数: ?   1.生成代理对象使用哪个类装载器 ?   2.生成...
u011428274 2013-07-20 19:06 438
qq_36594703 +关注
原创 128 粉丝 0 喜欢 0 码云  
他的最新文章 更多文章
filter listener JQ的几种选择器
在线课程

【免费】搜狗机器翻译技术分享
讲师:

深度学习在推荐领域的应用和实践
讲师:吴岸城
热门文章 el&jstl
416
鼠标的触发事件
236
云计算NA1
204
表格模型
187
window案例
177
0
  Web前端 最新文章
echarts莫名缩小,并且宽度不能更改,生成时
JAVA后台 关于如何从后台传递信息在jsp前端
HTTP协议(二)
阿里云服务器的域名解析解决方案
live-server的安装与使用
HTML播放视频(兼容IE低版本)
windows下配置nginx+php环境
Chorme 开代理后无法打开jsp页面的问题
分布式任务调度平台XXL
作用域
上一篇文章      下一篇文章      查看所有文章
加:2017-10-30 04:00:11  更:2017-10-30 04:00:16 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年4日历
2018-4-23 2:00:17
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库