java 反射(一)
来源:互联网 发布:linux makefile编写 编辑:程序博客网 时间:2024/06/05 05:31
我们首先来看一个例子
Animal a=new Dog()
首先,我们需要明白JAVA语言的运行机制,Java源文件经过编译,产生与平台无关的.class文件,然后由Java虚拟机(JVM)执行。
上面的代码将会产生一个a变量,该变量编译时的类型是Animal,运行时的类型则为Dog.编译时根本无法预知该对象和类术语哪些类,只能靠运行时的信息来发现该对象和类的真是信息,这时候就要用到反射。
反射到底有什么用呢?
下篇文章,将会介绍用反射机制来解析Json.
简单来概括,就是能够分析类的能力的程序称为反射。
反射机制可以用来:
1.在运行中分析类的能力
2.在运行中查看对象
3.实现通用的数组操作代码
每个类在被加载后,系统都会为之建立一个java.lang.Class对象,通过该Class对象就可以访问到JVM中的这个类。
获取Class对象有3种方式:
1.使用Class类的forName(String clazzName)静态方法,参数必须包含完整的包名。例如Class.forName(org.test.Animal);
2.调用某个类的class属性。例如Dog.class将会返回Dog类对应的Class对象。
3.调用某个对象的getClass()方法。
一下3中获取方式是一样效果:
Class classA=Class.forName("test.Animal");Class classB=Animal.class;Class classc=new Animal().getClass();
对于"java.lang.String",为了获取该字符串对应的Class对象,我们就只能使第一种方法了。
获取了Class对象后我们应该做什么?当然是对其操作获取信息了。
从Class中获取信息
1.获取Class对象包含的构造器
2.获取Class对象包含的方法
3.获取Class对象包含的Field
4.获取Class对象包含的Annotation
5.获取Class对象包含的内部类
6.获取Class对象包含的外部类
7.获取Class对象多继承的父类,实现的接口
8.获取Class对象包含的修饰符,包名等
可以看出,我们可以通过操作Class获得对应类的信息,甚至是无关权限地访问它的方法或者Field。也就是说我们能访问类的private方法。
- java 反射(一)
- Java反射(一)
- JAVA反射(一)
- Java反射(一)
- java反射(一)
- Java的反射(一)
- Java 反射学习(一)
- Java反射机制(一)
- Java反射(一)Class
- java反射机制(一)
- Java 反射机制(一)
- Java反射总结(一)
- Java反射相关(一)
- java--类反射(一)
- java反射机制(一)
- JAVA反射机制(一)
- 关于java反射(一)
- Java反射机制(一)
- 进程和线程的区别
- mysql安装在centos7报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- 也谈BIO | NIO | AIO (Java版)
- Windows下实现Dubbo的Zookeeper集群
- python pil 第三方库实战之一:给图片加字
- java 反射(一)
- 003——第一个hibernate例子
- 用63种进制说爱你
- 使用handler实现进程间通信
- 一个都不能少
- PHP中session锁定
- JAVA基础语法、面向对象、了解java对象的生存周期(Object、修饰符、数组、枚举、接口、抽象类)
- 【leetcode】110. Balanced Binary Tree
- PHP$a[]和$a的区别