.获得某个类的对应的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