Java的反射机制(1)-反射功能的基本介绍
2015-04-23 17:54
246 查看
参考网址: http://my.oschina.net/u/1407116/blog/209417 http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
在此之前需了解的背景知识:
Class类:
Class的实例表示正在运行的类和接口,基本的数据类型(boolean, byte, char, short, int, long, float, double)以及void也比表示Class对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。(不能直接new出来)
重要方法:
newInstance():创建此Class对象所表示的类的一个对象并返回。只能使用在默认的构造方法中。一定要自己定义无参的构造函数。
getName():以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称。
forName():返回与带有给定字符串名的类或接口相关联的Class对象,Class的静态方法。
代码:
//demo4中应用了泛型。
这边比较乱,画了个图:
反射机制:
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
反射使用:
Method是反射最基本的一个类。
getMethod(String name, Class<T>…parameterTypes):返回一个Method对象,它反映此Class对象所表示的类或接口的指定公共成员方法。
invoke(Object obj, Object… agrs):对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
代码:
在此之前需了解的背景知识:
Class类:
Class的实例表示正在运行的类和接口,基本的数据类型(boolean, byte, char, short, int, long, float, double)以及void也比表示Class对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。(不能直接new出来)
重要方法:
newInstance():创建此Class对象所表示的类的一个对象并返回。只能使用在默认的构造方法中。一定要自己定义无参的构造函数。
getName():以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称。
forName():返回与带有给定字符串名的类或接口相关联的Class对象,Class的静态方法。
代码:
//直接将People类赋值 Class<?> demo1 = People.class; //调用Class的静态方法forName,返回一个People,即Class的对象 Class<?> demo2 = Class.forName("www.baidu.com.People"); //通过实例的getClass()方法获取类,赋值给Class People people = new People(); Class<?> demo3 = people.getClass(); People mPeople = null; mPeople = (People)demo1.newInstance(); Class<People> demo4 = People.class; People people2 = null; people2 = demo4.newInstance();
//demo4中应用了泛型。
这边比较乱,画了个图:
反射机制:
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
反射使用:
Method是反射最基本的一个类。
getMethod(String name, Class<T>…parameterTypes):返回一个Method对象,它反映此Class对象所表示的类或接口的指定公共成员方法。
invoke(Object obj, Object… agrs):对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
代码:
Method method[] = demo4.getMethods(); System.out.println(method[0]); System.out.println(method[1]); 输出: public java.lang.String www.baidu.com.People.getAge() public void www.baidu.com.People.setAge(java.lang.String) Method myMethod = demo4.getMethod("sayHi"); myMethod.invoke(demo4.newInstance()); 输出: HelloWorld!
相关文章推荐
- 学习笔记——JAVA反射<1>反射机制的介绍和基本操作
- 【Java】 Java的反射机制概述及方法介绍
- 反射学习1、反射机制的介绍和基本的API的使用
- 反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212
- java 反射机制的基本知识
- Java学习之反射机制及应用场景介绍
- Java 反射机制介绍
- C++实现类似JAVA反射的基本功能
- 反射机制的基本用法--java
- Java 反射机制知识详细介绍及总结
- java 反射机制的基本知识
- Java中关于函数回调和反射机制的介绍
- 通用角色和反射机制开发实例控件及实现功能介绍
- JAVA的反射机制(reflect)
- Java 反射机制
- 黑马程序员之java类加载器和java中的反射机制学习
- java的反射机制Reflection(重点、难点)
- 详细介绍Java垃圾回收机制
- Java使用基本JDK操作ZIP文件以及zip文件的加密、解密等功能
- java invoke 反射机制的使用