Java中构造方法内调用本类其他构造器只能用this(...)且必须为首条语句;不可在条件块或普通方法中调用,参数须严格匹配,禁止递归与super共存,用于复用初始化逻辑。

Java 中在构造方法内部调用另一个构造器,只能通过 this(...) 实现,且必须是构造方法的第一条语句;不能用 new 创建新对象,也不能在普通方法或条件块中调用。
调用方式:this() 必须放在第一行
同一个类中,一个构造器可以通过 this(参数) 调用本类的其他构造器。这个调用必须是构造方法中的第一条可执行语句,否则编译报错。
- ✅ 正确写法:this("name", 25);(放在第一行)
- ❌ 错误写法:System.out.println("xxx"); this("name", 25);(非首行)
- ❌ 错误写法:if (x > 0) this("name");(不能在条件语句中)
参数传递:按目标构造器的形参类型和顺序传入
传给 this(...) 的实参,必须严格匹配被调用构造器的参数列表(类型、个数、顺序)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 例如有构造器 public Person(String name) { ... },就只能写 this("Alice")
- 若有重载:Person(String name, int age) 和 Person(String name),可在后者中写 this(name, 0) 来复用前者逻辑
- 支持字面量、变量、表达式(如 this(name.toUpperCase(), age + 1)),但表达式必须能在编译期确定类型
不能递归调用,也不能调用父类构造器
this(...) 只能调用本类其他构造器,且整个链中不能形成循环(比如 A → B → A);调用父类构造器要用 super(...),且与 this(...) 互斥(二者不能共存)。
立即学习“Java免费学习笔记(深入)”;
- ❌ 不允许:this(); this("abc");(重复调用)
- ❌ 不允许:this(); super();(二者选其一)
- ✅ 允许:this(name); 或 super(name);,但不能同时出现
典型用途:减少重复初始化逻辑
常用于将多个构造器的公共初始化步骤集中到一个“主构造器”中,其他构造器通过 this 委托过去。
- 例如设置默认值:this(name, 0, "unknown");
- 或统一校验:this(validateName(name), clampAge(age));
- 避免字段重复赋值,提升可维护性

















