美文网首页
1. 反射回顾:反射是IoC的基础

1. 反射回顾:反射是IoC的基础

作者: seacolo | 来源:发表于2018-10-11 09:44 被阅读0次

    类对象应该指类的Class对象,也就是字节码对象可以通过Class.forName()/getclass()/.class来获取,当jvm加载一个类时就会为这个类创建一个Class对象;

    类的对象,通常就是指我们通过new这个类或者反射得到Class对象再调用newInstance()创建的对象,存在内存的堆中,也叫类的实例;

    public class TestMain {
        public static void main(String[] args) {
            System.out.println(XYZ.name);
        }
    }
    
    class XYZ {
        public static String name = "静态变量";
    
        static {
            System.out.println("静态块");
        }
    
        public XYZ() {
            System.out.println("构造方法");
        }
    }
    
    结果: 
    
    静态块
    静态变量
    

    解析:

    类加载器首先会检查这个类的Class对象是否已被加载过,如果尚未加载,默认的类加载器就会根据类名查找对应的.class文件。

    想在运行时使用类型信息,必须获取对象(比如类Base对象)的Class对象的引用,使用功能Class.forName(“Base”)可以实现该目的,或者使用base.class。==注意,有一点很有趣,使用功能”.class”来创建Class对象的引用时,不会自动初始化该Class对象,使用forName()会自动初始化该Class对象==。为了使用类而做的准备工作一般有以下3个步骤:

    1. 加载:由类加载器完成,找到对应的字节码,创建一个Class对象
    2. 链接:验证类中的字节码,为静态域分配空间
    3. 初始化:如果该类有超类,则对其初始化,执行静态初始化器和静态初始化块
    

    相关文章

      网友评论

          本文标题:1. 反射回顾:反射是IoC的基础

          本文链接:https://www.haomeiwen.com/subject/teivaftx.html