反射学习(二)

 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 }

 

posted @ 2017-11-09 23:13  清风拂来  阅读(224)  评论(0编辑  收藏  举报