java——reflect
一.Class类的使用 什么是Class类? 1:在面向对象的世界中,万事万物皆对象。
java语言中,静态的成员,普通数据类型类是不是对象呢?
是,对象!是类的对象!
类是谁的对象吗?
类也是是对象,类是java.lang.Class 类的实例对象!
现在有个类它的名字就是Class! There is a class name Class.任何一个类都是Class的实例对象,这种实例对象有三种表示方式
class Foo{}Foo f = new Foo();//第一种 Class c1 = 类名.class; //Class c1 = Foo.class;//第二种 Class c2 = 对象.getClass(); //Class c2 = f.getClass();//c1和c2 表示了Foo类的类 类型(class type) //第三种 使用class.forName();Class c3 = class.forName("XXX.XX.Foo");2.动态加载和静态加载
编译时刻加载类是静态加载,运行时刻加载类是动态加载类 。
new 创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类。 如何解决在编译时候忽略那些不需要加载的类呢?
解决方案:通过动态加载类!使用Class.forName(“”);
二.方法的反射
基本的数据类型。void的关键字都存在类 类型!
1.区别
getName : 基本和引用类型! getSimpleName : 引用类型不包括包名,只有类的名称。三.成员变量的反射
成员变量是 java.lang.reflect.Field 的类对象!
Field 类封装了关于成员变量的操作!
getField():获取的是所有的public的成员变量的信息 getDeclaredFields():获取的是该类自己的成员变量的信息四.构造函数的反射
构造函数也是对象,是java.lang.Constructor中封装了构造函数的信息。
getConStructors 获取所又的public的构造函数 getDeclaredConstructors 得到的是自己申明的所有的构造函数5.java的类加载机制
反射都是运行时刻执行的!也就是动态加载!
集合中泛型的使用?
集合中的泛型是防止错误输入的,只有编译阶段有效, 绕过编译就无效了!也就是说泛型只在编译的时候有用,所以我们可以通过方法的反射来操作,绕过编译!
使用传送技能,让你快速学习反射知识!
慕课学习反射视频地址: http://www.imooc.com/video/3738
欢迎访问我的csdn博客,我们一同成长!
“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”
博客首页:http://blog.csdn.net/u010648555
新闻热点
疑难解答