Java反射机制的使用
2014-04-03 20:45
295 查看
在学习Java反射机制之前我应该先明确两个问题。
1、反射机制的作用是什么?
答:我们可以通过反射机制动态地获取类的信息,如成员、方法、构造方法、类名等(也可以获取private修饰的类的成员变量、方法等)。
2、什么是动态获取类的信息呢?
答:即在程序运行时获取类的信息,而非编译时。
下面让我们用Java代码来切身体会一下反射机制,现在已知B类如下,让我们通过A类来完成两件事情,①、调用B类的私有方法;②、修改、访问B类的私有成员。
B类
①、通过A类实现调用B类的私有方法
②、通过A类实现修改、访问B类的私有成员
以上的程序便简单地实现了反射机制,java.lang.reflect包下的接口和类,为我们提供了很多操作灵活实现反射机制的方法,方法众多,笔者就不一一列举了,大家可以多查看Java的帮助文档,查看文档是一种能力。
1、反射机制的作用是什么?
答:我们可以通过反射机制动态地获取类的信息,如成员、方法、构造方法、类名等(也可以获取private修饰的类的成员变量、方法等)。
2、什么是动态获取类的信息呢?
答:即在程序运行时获取类的信息,而非编译时。
下面让我们用Java代码来切身体会一下反射机制,现在已知B类如下,让我们通过A类来完成两件事情,①、调用B类的私有方法;②、修改、访问B类的私有成员。
B类
package com.nepu.reflection; public class B { //年龄属性 private int age = 22; //笑count次方法 private void laugh(Integer count) { for(int i=0;i<count;i++) { System.out.println("哈哈!"); } } }
①、通过A类实现调用B类的私有方法
package com.nepu.reflection; import java.lang.reflect.*; public class A { public static void main(String[] args) throws Exception { // 加载调用类 Class clazz = Class.forName("com.nepu.reflection.B"); // 创建类的实例对象 Object o = clazz.newInstance(); // 获取类的笑n次方法 Method method = clazz.getDeclaredMethod("laugh", Integer.class); //设置为可访问私有方法 method.setAccessible(true); // 调用笑方法(一共笑9次) method.invoke(o, 9); } }
②、通过A类实现修改、访问B类的私有成员
package com.nepu.reflection; import java.lang.reflect.*; public class A { public static void main(String[] args) throws Exception { // 加载调用类 Class clazz = Class.forName("com.nepu.reflection.B"); // 创建类的实例对象 Object o = clazz.newInstance(); // 获取类的年龄成员 Field field = clazz.getDeclaredField("age"); // 设置为可访问私有成员 field.setAccessible(true); // 给成员的年龄设为23 field.set(o, 23); // 获取成员变量的值 int age = (int) field.get(o); // 输出获取的年龄 System.out.println("我今年" + age + "岁。"); } } // 结果为:我今年23岁。
以上的程序便简单地实现了反射机制,java.lang.reflect包下的接口和类,为我们提供了很多操作灵活实现反射机制的方法,方法众多,笔者就不一一列举了,大家可以多查看Java的帮助文档,查看文档是一种能力。
相关文章推荐
- 使用Java反射机制创建对象
- 使用Java反射机制遍历实体类的属性和类型
- 使用java反射机制运行时进行Map和POJO的互相转换
- Filed 类的使用方法以及java反射机制的案例
- Java反射机制的使用方法
- JAVA反射机制——Class 类的使用
- Java反射机制的使用(全)
- 使用java反射机制来模拟hibernate session的实现原理
- Java反射机制使用实例
- 使用java反射机制读取任意类内部细节
- Java反射机制原理及使用(二)
- 如何使用java反射机制测试私有方法
- java反射机制初步认识<三>注解(Annotation)的使用
- 使用Java反射机制覆盖toString()方法
- 【Java反射机制】_Class类的使用笔记
- Java反射机制的原理与简单使用
- 使用Java反射机制实现访问类中的私有变量或者方法
- java反射机制的原理与简单使用
- 【RMI】使用Java反射机制实现RMI
- Java反射机制的原理与使用(反编译)