java学习——java中的反射学习笔记「建议收藏」

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

大家好,又见面了,我是全栈君。

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 : 引用类型不包括包名,只有类的名称。


getMethods(): 方法获取的是所有public的函数,包括父类继承而来的 getDeclaredMethods(): 获取的是所有该类自己声明的方法,不问访问权限 

三.成员变量的反射

成员变量是 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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121180.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号