黑马程序员_JAVA反射机制的理解
来源:互联网 发布:淘宝台式机便宜 编辑:程序博客网 时间:2024/05/11 04:23
反射:可以动态的获取指定类中的成员,以及建立类对象。
好处:提高了程序的扩展性。
当class文件产生以后,这些class文件也是生活中的事物,那么对这些class文件也可以进行描述,该描述对应的类型就是Class。
在java中,每一个字节码文件都有一一个与之对应的Class对象。不仅包括引用数据类型,也包括基本数据类型。
以下就是获取字节码文件的三种方式。
String.class----Class
Class class1=String.class;
Class class2=s.getClass();
Class class3 = Class.forName("java.lang.String");
以前操作对象的时候用的是new关键字完成,并通过对象.成员方式进行调用
Person p= new Person();
p.function("heihei");
获取参数列表现在可以通过字节码对象完成以上动作。
Class clazz = Class.forName("Person");
Person p=(Person)clazz.newInstance();
p.function("heihei");
类可以作为参数进行传递,那么方法也一样可以作为参数进行传递,因为方法存在于字节码文件内, 所以可以通过Class对象获取字节码文件中的内容。
Method m = Class.getMethod("function",String.class); m.invoke(p,"heihei");
java反射详解
反射的概念:所谓的反射就是java语言在运行时拥有一项自观的能力,反射使您的程序代码能够得到装载到JVM中的类的内部信息,允许您执行程序时才得到需要类的内部信息,而不是在编写代码的时候就必须要知道所需类的内部信息,这使反射成为构建灵活的应用的主要工具。
反射的常用类和函数:Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method;其中class代表的是类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象,通过这四个对象我们可以粗略的看到一个类的各个组成部分。其中最核心的就是Class类,它是实现反射的基础,它包含的方法我们在第一部分已经进行了基本的阐述。应用反射时我们最关心的一般是一个类的构造器、属性和方法,下面我们主要介绍Class类中针对这三个元素的方法:
1、得到构造器的方法
Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,
Constructor[] getConstructors() -- 获得类的所有公共构造函数
Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)
Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关)
2、获得字段信息的方法
Field getField(String name) -- 获得命名的公共字段
Field[] getFields() -- 获得类的所有公共字段
Field getDeclaredField(String name) -- 获得类声明的命名的字段
Field[] getDeclaredFields() -- 获得类声明的所有字段
3、获得方法信息的方法
Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法
Method[] getMethods() -- 获得类的所有公共方法
Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法
Method[] getDeclaredMethods() -- 获得类声明的所有方法
应用反射的基本步骤:
1、获得你想操作的类的Class对象;
方法一:Class c=Class.forName("java.lang.String")
方法二:对于基本数据类型可以用形如Class c=int.class或Class c=Integer.TYPE的语句
方法三:Class c=MyClass.class
2、调用Class中的方法得到你想得到的信息集合,如调用getDeclaredFields()方法得到类的所有属性;
3、处理第2步中得到的信息,然后进行你想做的实际操作。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
- 黑马程序员_JAVA反射机制的理解
- 黑马程序员_java的反射机制
- 黑马程序员_java的反射机制_01
- 黑马程序员_java的反射机制
- 黑马程序员_Java的反射机制
- 黑马程序员_java反射机制的概述
- 黑马程序员_java 反射的基本理解
- 黑马程序员_Java反射机制
- 黑马程序员_Java反射机制
- 黑马程序员_Java反射机制
- 黑马程序员_Java反射机制
- 黑马程序员_java反射机制的学习笔记
- 黑马程序员_java的反射
- 黑马程序员_java中的反射机制
- 黑马程序员_java反射机制解析
- 黑马程序员_Java反射机制学习笔记
- 黑马程序员_JAVA反射机制(一)
- 黑马程序员_Java-反射机制小结
- oracle,Cannot SET AUTOTRACE解决问题 (只能在sql plus下执行)
- Android手机实现GPS语音导航功能(Google地图导航)
- 查找 EXC_BAD_ACCESS 问题根源的方法
- 描述性程序对象属性值不识别的问题
- 无锁队列
- 黑马程序员_JAVA反射机制的理解
- vc++ warnings及其解决方法
- 新浪微博估值为何半年掉了40亿美金?
- 关于自己使用adb的一些小心得
- Android学习之刷新activity
- 傅雷《贝多芬传》译者序
- Android手势识别ViewFlipper触摸动画
- 2012年敏捷个人俱乐部(北京)实践团开始报名了......
- Lovers