java构造函数注入对象先运行什么
时间:2024-11-17 22:43:17
答案

在Java开发中,构造函数注入是一种常见的依赖注入方式,它允许我们在创建对象的同时为其注入所需的依赖。但是,有一个问题经常困扰着开发者:在进行构造函数注入时,对象的初始化顺序是怎样的? 首先,我们需要明确一点,Java虚拟机(JVM)在加载类时,会首先执行静态代码块,然后才是类的实例化。在构造函数注入的情况下,以下是运行的顺序:

  1. 父类静态代码块:如果存在父类,JVM首先会执行父类的静态代码块。
  2. 子类静态代码块:然后执行当前类的静态代码块。
  3. 父类构造函数:在完成静态代码块的执行后,JVM会调用父类的构造函数。
  4. 依赖注入:接着,才会执行构造函数注入,注入所需的依赖对象。
  5. 子类构造函数剩余部分:在依赖注入完成后,继续执行构造函数的剩余部分。 举个例子,如果我们有一个父类Parent和子类Child,Child类通过构造函数注入依赖,代码如下: public class Parent { static { System.out.println("Parent static block"); } public Parent() { System.out.println("Parent constructor"); } } public class Child extends Parent { static { System.out.println("Child static block"); } private Dependency dependency; public Child(Dependency dependency) { super(); this.dependency = dependency; System.out.println("Child constructor with dependency"); } }在这个例子中,输出顺序将是:
推荐
© 2024 答答问 m.dadawen.com