1 package com.iotek.reflection;
2 /**
3 * 反射概念及Class对象
4 * @author Administrator
5 * @Version 1.0 2017/05/24
6 */
7 public class classDemo {
8
9 public static void main(String[] args) {
10 // 第1种方法获得Class对象:对象名.getClass(),返回object的运行时类
11 Employee employee = new Employee("zhangsan", 30);
12 // 获取employee这个对象所对应的类型(Employee)所对应的Class对象
13 Class<?> classType = employee.getClass(); // ctrl+2 L ?代表这个类型可以接受所有Class类所
14 System.out.println(classType.getName()); // 打印class对象对应的类型:Employee
15 System.out.println(classType.getSuperclass().getName()); // 打印class对象对应的类型的父类:Object类型
16
17 // 第2种方法获得Class对象:类名.class
18 Class<?> classType1 = Employee.class;
19 System.out.println(classType1.getName()); // 打印class对象对应的类型:Employee
20 System.out.println(classType1.getSuperclass().getName());
21
22 // 第3种方法获得Class对象:使用Class.forName()这个静态方法来获取类与之对应的class对象
23 try {
24 Class<?> classType2 = Class.forName("com.iotek.classtype.Employee");
25 System.out.println("classType2 is:"+classType2.getName());
26 System.out.println(classType2.getName()); // 打印class对象对应的类型:Employee
27 System.out.println(classType2.getSuperclass().getName());
28
29 } catch (ClassNotFoundException e) {
30 // TODO Auto-generated catch block
31 e.printStackTrace();
32 }
33
34 // 第4种方法获得Class对象:获取基本数据类型的Class对象
35 Class<?> classType3 = int.class;
36 System.out.println(classType3.getName()); // 打印class对象对应的类型:Employee
37 // System.out.println(classType3.getSuperclass().getName()); 只有对象才有父类
38 // 通过基本数据类型的包装类来获取对应的基本数据类型所对应的Class对象
39 Class<?> classType4 = Double.TYPE;
40 // Double是一个包装类
41 System.out.println(classType4.getName()); // 打印class对象对应的类型:Employee
42 // System.out.println(classType4.getSuperclass().getName());
43 Class<?> classType5 = Double.class;
44 System.out.println(classType5.getName()); // 打印class对象对应的类型:Employee
45 System.out.println(classType5.getSuperclass().getName());
46 // 上面语句输出java.lang.Number,说明Double这个类的父类是Number
47 }
48
49 }
50
51 class Employee {
52 private String name;
53 private int age;
54
55 public Employee(String name, int age) {
56 super();
57 this.name = name;
58 this.age = age;
59 }
60
61 public String getName() {
62 return name;
63 }
64
65 public void setName(String name) {
66 this.name = name;
67 }
68
69 public int getAge() {
70 return age;
71 }
72
73 public void setAge(int age) {
74 this.age = age;
75 }
76
77 }