反射

1. 什么是反射

将类的各个组成部分封装为其他对象,这就是反射机制。

好处:

  (1)可以在程序运行过程中操作这些对象

  (2)可以解耦,提高程序的可扩展性

2. 获取class对象的三种方式

①Class.forName(“全类名”)

  将字节码文件加载到内存,返回class对象

  多用于配置文件中,将类名定义在配置文件中。读取文件,加载类。

②类名.class()

  通过类名的属性class获取

  多用于参数的传递

③对象.getClass()

  多用于对象获取字节码文件对象的方式

 1 package cn.itcats02.day_01;
 2 
 3 public class test01 {
 4 
 5     public static void main(String[] args) throws ClassNotFoundException {
 6         //Class.forName("全类名")
 7         Class cls1 = Class.forName("cn.itcats02.day_01.Person");
 8         System.out.println(cls1);
 9 
10         //类名.class
11         Class cls2 = Person.class;
12         System.out.println(cls2);
13 
14         //对象.getClass()
15         Person p = new Person();
16         Class cls3 = p.getClass();
17         System.out.println(cls3);
18 
19         //验证是否是同一个对象
20         System.out.println(cls1 == cls2);
21         System.out.println(cls2 == cls3);
22         System.out.println(cls1 == cls3);
23 
24         //结论:同一个字节码文件在一次程序运行过程中只会被加载一次
25 
26     }
27 }

3. Class对象的功能

原文地址:https://www.cnblogs.com/nnnnbbbb1/p/13023869.html