Java中的反射(1)
来源:互联网 发布:科荣纺织软件 编辑:程序博客网 时间:2024/06/07 03:54
首先介绍反射机制的功能:
- 在运行中分析代码
- 在运行中查看对象
- 实现通用的数组操作代码
- 利用Method对象,这个对象很像C++中的函数指针
Class类:
学习反射即不得不接触一个新的类(Class类),在java运行时系统会为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。
对于每个类而言,JRE都为其保留了一个不变的Class类对象 ,yige Class对象包含了特定的某个类的有关信息。
下面通过例子说明:
class Employee{ private int age; // private String name; public int getage(){ return this.age; } public void setage(int age){ this.age=age; }}
1。 第一种获取Class类实例的方法。对于Object类中的getClass()方发将会返回一个Class类型的实例
Employee e;Class cl=e.getClass();cl便是一个用来保存Employee类有关信息的Class类。一个Class对象表示一个特定类的属性(cl表示Employee类的特定属性)
如果存在一个类继承于Employee
class Manager extends{}Employee e1=new Employee();Employee e2=new Manager();Class cl1=e1.getClass();Class cl2=e2.getClass();
就上 面的代码来介绍一个新的方法 Class类的getName()方法:
System.out.println(e1.getClass.getName());//EmployeeSystem.out.println(e2.getClass.getName());// ManagerData data=new Data();Class cl=data.getClass();String classname=cl.getName();"java.uitl.Data"说明getName()的作用是输出一个对象所属的类的真实类名
2。 接着介绍另两种获取Class类实例的方法:
- 一:
String classname="java.uitl.Data";Clsaa cl=Class,forName(classname)
上面代码便是通过真实存在类名或者接口名获取一个Class实例,前提是这个classname必须真实存在,否则会抛出一个checkedexception异常
- 二:如果T是任意的Java类型。T.class将代表匹配的类对象。例如:
Class cl1=Data.class;Class cl2=int.class;
方法newInstance(),作用:根据一个类对象快速创建一个与这个对象具有相同类类型的实例。需要注意的是:通过newInstance()实例化一个对象时,调用的是这个类的无参构造函数。如果没有无参构造函数就会抛出异常
Employee e1=new Employee(); Employee e2= e.getClass().newInstance(); e1.getClass()==e2.getClass();//true 结合forName()和newInstance()使用 String s="java.uitl.Data"; Object m=Class.forName(s).newInstance(); Data data=(Data)m;
0 0
- Java中的反射(1)
- java中的反射机制1
- Java中的反射——(1)什么是反射
- Java中的反射机制(1)
- java中的反射机制-1(学习总结)
- JAVA中的类反射
- Java中的反射
- Java中的类反射
- Java中的反射机制
- JAVA中的反射机制
- java 中的反射
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射应用
- java中的反射
- Java中的反射
- Android之I/O篇以及目录该放在什么位置
- 华为 14
- mysql中explain用法和结果的含义
- Java Socket通信
- java中的垃圾回收机制
- Java中的反射(1)
- APM调试,地面站随手记
- Windows虚拟机中配置 域网络 遇到的问题
- JMeter压测基础篇:linux服务器执行压测三部曲之三
- nginx配置自定义404界面
- Python 之 __new__() 方法与实例化
- Dalvik虚拟机进程和线程的创建过程分析
- opencv2笔记01-注意事项
- PAT 1040. Longest Symmetric String (25)(最大对称长度)