Java中反射详解-创新互联
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

阅读目录
- Java反射API
- 通过反射创建实例对象
- 通过反射调用私有方法
- 关于javap工具
- 参考资料
Java反射API
Java反射指的是在运行状态时,能够获取类的属性和方法或者修改类运行时行为的过程。
java.lang.Class类提供了很多方法用于获取元数据、检查和改变类运行时的行为。
Java的反射主要涉及java.lang和java.lang.reflect包下的类。
反射应用场景举例
- IDE, 如Eclipse、MyEclipse、NetBeans等;
- 调试器;
- 测试工具等;
- 各大框架、spring、hibernate等;
java.lang.Class类
java.lang.Class主要提供了以下两个功能:
- 提供方法用于访问运行期间类的元数据;
- 提供方法用于检查和修改类的运行时行为;
java.lang.Class类常用方法
| Method | Description |
|---|---|
| 1) public String getName() | 返回类名 |
| 2) public static Class forName(String className)throws ClassNotFoundException | 加载类并返回Class对象 |
| 3) public Object newInstance()throws InstantiationException,IllegalAccessException | 创建实例对象 |
| 4) public boolean isInterface() | 判断是否是接口 |
| 5) public boolean isArray() | 判断是否是数组 |
| 6) public boolean isPrimitive() | 判断是否是原始数据类型 |
| 7) public Class getSuperclass() | 返回父类Class引用 |
| 8) public Field[] getDeclaredFields()throws SecurityException | 返回类的成员属性字段数组 |
| 9) public Method[] getDeclaredMethods()throws SecurityException | 返回类的方法数组 |
| 10) public Constructor[] getDeclaredConstructors()throws SecurityException | 返回类的构造方法数组 |
| 11) public Method getDeclaredMethod(String name,Class[] parameterTypes)throws NoSuchMethodException,SecurityException | 返回类中指定参数类型的方法 |
怎样获取Class对象
有三种方式,如下:
- Class类的forName()方法,动态加载,运行时,开始装入类, 并做类的静态初始化
- 对象的getClass()方法,静态加载(编译时已加载)
- .class语法, 静态加载(编译时已加载)
forName()方法示例
可用于动态加载,当你知道类的全限定名时,可以使用该方式。注意原始数据类型不适用该方法;
package tmp;
class Simple
{
}
public class Test
{
public static void main(String args[]) throws ClassNotFoundException
{
Class<?> c = Class.forName("tmp.Simple");
System.out.println(c.getName());
System.out.println(c.getSimpleName());
}
}
本文标题:Java中反射详解-创新互联
标题链接:http://www.lzwzjz.cn/article/coiiid.html


咨询
建站咨询
