JavaWeb-1.2.1【基础加强:反射之获取Class对象的方式】

 

 

 1 package com.yubaby.reflect;
 2 
 3 import com.yubaby.domain.Person;
 4 
 5 /*
 6 2 反射:框架设计的灵魂
 7 
 8     * 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
 9     * 反射:将类的各个组成部分封装为其他对象,这就是反射机制
10         * 好处:
11             1. 可以在程序运行过程中,操作这些对象。
12             2. 可以解耦,提高程序的可扩展性。
13  */
14 /*
15 获取Class对象的方式:
16      1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
17           多用于配置文件,将类名定义在配置文件中。读取文件,加载类
18      2. 类名.class:通过类名的属性class获取
19           多用于参数的传递
20      3. 对象.getClass():getClass()方法在Object类中定义着。
21           多用于对象的获取字节码的方式
22      结论:
23         同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,
24         不论通过哪一种方式获取的Class对象都是同一个。
25  */
26 public class ReflectDemo1 {
27     public static void main(String[] args) throws ClassNotFoundException {
28         Class<?> aClass = Class.forName("com.yubaby.domain.Person");
29         System.out.println(aClass); //class com.yubaby.domain.Person
30 
31         Class<Person> aClass1 = Person.class;
32         System.out.println(aClass1); //class com.yubaby.domain.Person
33 
34         Person person = new Person();
35         Class<? extends Person> aClass2 = person.getClass();
36         System.out.println(aClass2); //class com.yubaby.domain.Person
37 
38         //比较对象(地址值)
39         System.out.println(aClass == aClass1); //true
40         System.out.println(aClass == aClass2); //true
41 
42         Class<Student> studentClass = Student.class;
43         System.out.println(studentClass); //class com.yubaby.reflect.Student
44     }
45 }
46 
47 class Student {
48     public void sleep(){
49         System.out.println("sleep...");
50     }
51 }
 1 package com.yubaby.domain;
 2 
 3 public class Person {
 4     private String name;
 5     private int age;
 6 
 7     public int a;
 8     protected int b;
 9     int c;
10     private int d;
11 
12     public Person() {
13     }
14 
15     public Person(String name, int age) {
16         this.name = name;
17         this.age = age;
18     }
19 
20     public void setName(String name) {
21         this.name = name;
22     }
23 
24     public void setAge(int age) {
25         this.age = age;
26     }
27 
28     public String getName() {
29         return name;
30     }
31 
32     public int getAge() {
33         return age;
34     }
35 
36     @Override
37     public String toString() {
38         return "Person{" +
39                 "name='" + name + '\'' +
40                 ", age=" + age +
41                 ", a=" + a +
42                 ", b=" + b +
43                 ", c=" + c +
44                 ", d=" + d +
45                 '}';
46     }
47 
48     public void eat(){
49         System.out.println("eat...");
50     }
51 
52     public void eat(String food){ //函数重载
53         System.out.println("eat:" + food);
54     }
55 }

 

posted @ 2021-06-22 19:45  yub4by  阅读(61)  评论(0编辑  收藏  举报