.获得某个类的对应的Class对象的方式:
1、使用类的.class语法
2、通过类的对象的getClass()方法
3、通过Class的getSuperclass()方法
4、通过Class对象的forName()方法
5、对于包装类,可以通过.TYPE语法方式
例子:
java 代码
1.package com.test;
2.
3.public class PrivateTest {
1.
2. private String name = "hello";
3. public String getName()
4. {
5. return name;
6. }
7.
8.}
java 代码
1.package com.test;
2.
3.import java.lang.reflect.Field;
1.
2.//题目:将PrivateTest中的name变量的值改为"world"
1.public class ReflectTest {
1.
2. public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
3. PrivateTest pt = new PrivateTest();
4. Class clazz = PrivateTest.class;
5. //得到指定名字的域,用getDeclaredField函数可以得到所有的域,包括private类型的,而getField函数只能获得非private类型的
6. Field field = clazz.getDeclaredField("name");
7. //只有当设置成强制访问后,私有变量的值才会可以被设置
8. field.setAccessible(true);
9. field.set(pt, "world");
10. System.out.println(pt.getName());//world
11. }
12.
13.}
示例代码:运用Class的getSupperclass()方法获得Class object
java 代码
1.package com.test;
2.
3.import java.awt.Button;
1.
2./**
1. * Class的getSuperclass()获得Class object示例
2. * @author yahaitt
3. *
4. */
5.public class Test {
1.
2. public static void main(String[] args) {
3.
4. Button b = new Button();
5. Class<?> clazz_1 = b.getClass();
6. Class<?> clazz_2 = clazz_1.getSuperclass();
7. Class<?> clazz_3 = clazz_2.getSuperclass();
8. Class<?> clazz_4 = clazz_3.getSuperclass();
9.
10. //System.out.println(clazz_1);相当于System.out.println(clazz_1.toString());
11. System.out.println(clazz_1);
12. System.out.println(clazz_2);
13. System.out.println(clazz_3);
14. System.out.println(clazz_4);
15. }
16.
17.}
运行结果:
class java.awt.Button
class java.awt.Component
class java.lang.Object
null
转载于:https://blog.51cto.com/jeiofw/851315