Java反射机制的使用方法
2016-01-12 12:32
399 查看
Java的反射机制同意你在程序执行的过程中获取类定义的细节。有时候在程序执行的时候才得知要调用哪个方法,这时候反射机制就派上用场了。
forName()。通过Class.forName()获取与字符串向相应的类。
比方\lstinline{Class.forName("java.lang.String");}。
getClass()。每一个对象都有这种方法。比方\lstinline{Foo foo; ...; foo.getClass();}。
类名.class。直接通过类名获取这个类的反射对象。比方String.class。
基本类型的类。
比方Integer.TYPE。
这样的方法与Integer.class是由差别的。一个是基本类型(Primitive type)。一个是复合类型(Composition)。
getConstructor(Class[] params)。获取公共的构造函数。
getConstructors()
getDeclaredConstructor(Class[] params)。获取全部构造函数。
getDeclaredConstructors()
获取构造函数之后能够通过newInstance生成一个新的实例。
getField(String name)。获取公共的字段。
getFields()。
getDeclaredField(String name)。获取全部的字段。
getDeclaredFields()
获取字段之后能够通过getDouble getInt等方法获取变量的值。也能够通过setDouble setInt等方法给变量赋值。
getMethod(String name, Class[] params)。获取公共的方法。
getMethods()
getDeclaredMethod(String name, Class[] params)。
获取全部的方法。
getDeclaredMethods()
获取成员方法之后能够调用invoke方法运行该方法。
获取类
类的获取方法有下面几种:forName()。通过Class.forName()获取与字符串向相应的类。
比方\lstinline{Class.forName("java.lang.String");}。
getClass()。每一个对象都有这种方法。比方\lstinline{Foo foo; ...; foo.getClass();}。
类名.class。直接通过类名获取这个类的反射对象。比方String.class。
基本类型的类。
比方Integer.TYPE。
这样的方法与Integer.class是由差别的。一个是基本类型(Primitive type)。一个是复合类型(Composition)。
获取构造函数
获取构造函数由下面几种方法:getConstructor(Class[] params)。获取公共的构造函数。
getConstructors()
getDeclaredConstructor(Class[] params)。获取全部构造函数。
getDeclaredConstructors()
获取构造函数之后能够通过newInstance生成一个新的实例。
获取字段
获取字段的方法有下面几种:getField(String name)。获取公共的字段。
getFields()。
getDeclaredField(String name)。获取全部的字段。
getDeclaredFields()
获取字段之后能够通过getDouble getInt等方法获取变量的值。也能够通过setDouble setInt等方法给变量赋值。
获取成员方法
获取方法的方法有下面几种:getMethod(String name, Class[] params)。获取公共的方法。
getMethods()
getDeclaredMethod(String name, Class[] params)。
获取全部的方法。
getDeclaredMethods()
获取成员方法之后能够调用invoke方法运行该方法。
数组
数组也是一个特殊的类型,因此Java中提供了java.lang.reflect.Array实现数组的动态操作。创建一个数组能够调用newInstance(type, count)方法,获取一个元素能够通过get(array, index)。相关文章推荐
- 在myeclipse中maven部署流程及遇见的问题
- java多线程--生产者和消费者模型
- eclipse 的一些小知识
- Java中ArrayList源码解析
- Java生成文件
- Spring 无法注入静态变量,直接在静态方法中获取bean
- Windows系统下查看JDK的版本和安装路径!
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十)之Inner Classes
- 待翻译---- Understanding Spring MVC Model and Session Attributes
- [javase学习笔记]-9.2 单继承与多重继承
- Java进阶(二十二)使用FileOutputStream写入文件
- Java进阶(二十二)使用FileOutputStream写入文件
- java中创建新进程的两种方法
- MySQL与Eclipse或者MyEclipse的连接
- Spring MVC 中 怎样从一个Controller 方法跳转到另一个方法,注意是跳转,不是调用
- 你不知道的JAVA
- 让JAVA代码跑得更快
- Struts2中DMI(动态方法调用)的一些问题
- 【JavaWeb Structs2学习】 用Action接受参数
- 关于Eclipse 插件添加右键菜单的三种方法