反射:反射的定义
来源:互联网 发布:什么是云计算和云服务 编辑:程序博客网 时间:2024/06/06 01:28
1.引出反射
问题1:
1.对象有编译类型和运行类型
Object obj = new java.util.Date();
编译类型: Object
运行类型: java.util.Date
需求:通过obj对象,调用java.util.Date类中的toLocaleString方法.
obj.toLocaleString(); 此时编译报错, 编译时,会检查该编译类型中是否存在toLocaleString方法.
如果存在,编译成功,否则编译失败.
解决方案,因为obj的真实类型是java.util.Date类,所以我们可以把obj对象强制转换为java.util.Date类型.
java.util.Date d = (java.util.Date)obj;
d.toLocaleString();//调用成功
如果不知道obj的真实类型,就不能强转.(底层有一个方法,返回一个Object类型的java.util.Date对象).
此时问题如何解决?
问题2:
在面向对象中提及到,一切事物都可以看成是对象,那么问题来了,类这种事物是啥对象呢?
又使用什么类来表示类这种对象呢?
1.对象有编译类型和运行类型
Object obj = new java.util.Date();
编译类型: Object
运行类型: java.util.Date
需求:通过obj对象,调用java.util.Date类中的toLocaleString方法.
obj.toLocaleString(); 此时编译报错, 编译时,会检查该编译类型中是否存在toLocaleString方法.
如果存在,编译成功,否则编译失败.
解决方案,因为obj的真实类型是java.util.Date类,所以我们可以把obj对象强制转换为java.util.Date类型.
java.util.Date d = (java.util.Date)obj;
d.toLocaleString();//调用成功
如果不知道obj的真实类型,就不能强转.(底层有一个方法,返回一个Object类型的java.util.Date对象).
此时问题如何解决?
问题2:
在面向对象中提及到,一切事物都可以看成是对象,那么问题来了,类这种事物是啥对象呢?
又使用什么类来表示类这种对象呢?
2.反射的定义
a. JAVA反射机制是在运行状态中,
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
b.反射技术
条件:运行状态
已知:一个类或一个对象(根本是已知.class文件)
结果:得到这个类或对象的所有方法和属性
注: 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
b.反射技术
条件:运行状态
已知:一个类或一个对象(根本是已知.class文件)
结果:得到这个类或对象的所有方法和属性
注: 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。
解决问题1
@Testpublic void testObj() throws Exception {Object object = new Date();Method method = object.getClass().getMethod("toLocaleString");Object d = method.invoke(object);System.out.println(d);}
阅读全文
0 0
- 反射:反射的定义
- 注解的定义和反射调用
- 注解的定义与反射调用
- 注解的定义与反射调用
- 注解的定义与反射调用
- 反射的定义及其简单实用方法
- JAVA反射机制定义
- JAVA反射机制定义:
- Java反射机制定义
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- http://demojava.iteye.com/blog/800204
- Ue4 BluePrint蓝图实现镜头(视角)切换及摆动范围(一)
- linux之unzip命令
- unbuntu 16.4 安装tensorflow
- 如何在JAVA中JTable获取某一行内容
- 反射:反射的定义
- Linux脚本攻略学习笔记14
- Keepalived之——*** WARNING
- Ubuntu安装telnet
- USACO Section1.1 Your Ride Is Here
- SonicOperator之算法优化
- vs编译COM无权限注册
- 【二分+复杂度分析】2017.5.21杂题[最大矩阵]题解
- 167. Two Sum II