java反射详解
2016-06-30 14:38
543 查看
本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。
下面开始正文。
【案例1】通过一个对象获得完整的包名和类名
?
【运行结果】:Reflect.Demo
添加一句:所有类的对象其实都是Class的实例。
【案例2】实例化Class类对象
?
【运行结果】:
类名称Reflect.Demo
类名称Reflect.Demo
类名称Reflect.Demo
我的理解是:所谓反射,就是根据一个已经实例化了的对象来还原类的完整信息
至少对我而言,我认为它带给我的好处是,让我从下往上的又了解了一遍面向对象
x_x在此又痛恨一边那些厚部头们,把我的脑细胞搞死一片
?
编译结果如下,注意包的编译方式即可
此处的getClass()方法是默认继承自Object类的
在java中,Object类是所有类的父类,同样,所有类的实例化对象也都是Class类的实例
因此,这样一来就会牵扯到向上转型和向下转型的概念
下面开始正文。
【案例1】通过一个对象获得完整的包名和类名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package Reflect; /** *通过一个对象获得完整的包名和类名 **/ class Demo{ //othercodes... } class hello{ public static void
Demodemo= new Demo(); System.out.println(demo.getClass().getName()); } } |
添加一句:所有类的对象其实都是Class的实例。
【案例2】实例化Class类对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package Reflect; class Demo{ //othercodes... } class hello{ public static void
Class<?>demo1= null ; Class<?>demo2= null ; Class<?>demo3= null ; try { //一般尽量采用这种形式 demo1=Class.forName( "Reflect.Demo" ); } catch (Exceptione){ e.printStackTrace(); } demo2= new Demo().getClass(); demo3=Demo. class ; System.out.println( "类名称" +demo1.getName()); System.out.println( "类名称" +demo2.getName()); System.out.println( "类名称" +demo3.getName()); } } |
类名称Reflect.Demo
类名称Reflect.Demo
类名称Reflect.Demo
我的理解是:所谓反射,就是根据一个已经实例化了的对象来还原类的完整信息
至少对我而言,我认为它带给我的好处是,让我从下往上的又了解了一遍面向对象
x_x在此又痛恨一边那些厚部头们,把我的脑细胞搞死一片
Class类
如果要完成反射,那么必须了解Class类实例1:通过对象取得包名和类名
此处的getClass()方法是默认继承自Object类的
在java中,Object类是所有类的父类,同样,所有类的实例化对象也都是Class类的实例
因此,这样一来就会牵扯到向上转型和向下转型的概念
相关文章推荐
- spring 6 bean配置--bean的作用域
- Java开发中的23种设计模式详解
- Java从hdfs上读取文件中的某一行
- Spring源码深度解析(六)获取XML的验证模式
- Eclipse javax.comm.NoSuchPortException
- Spring MVC整理系列(03)————Spring MVC的REST风格url
- java中volatile关键字---学习笔记
- manven项目Java Resource红叉报错的处理
- java的动态代理机制详解
- java知识巩固
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- Array数组对象常用操作总结(一)
- Elasticsearch java API (18)Aggregations 聚合 Bucket
- Quartz Spring 整合入门
- Android Eclipse使用.aar文件攻略
- Gsonformat——json快速生成javaBean
- 单链表Singly Linked List之JAVA实现
- java多线程之CountDownLatch
- MyEclipse 常用快捷键
- java多线程之Callable和Future