演示怎么给构造函数注入参数,使用指定的构造函数创建对象。
Customer
1 | package com.xtuer.beans; |
spring-beans.xml
1 |
|
InjectionTest
1 | import com.xtuer.beans.Customer; |
输出
1 | { |
age 为什么是 1234567? 不是我们想要的!
构造函数的断定时有歧义
Customer 有 3 个构造函数
- public Customer(String name, int age)
- public Customer(String name, String telephone, int age)
- public Customer(String name, int age, String telephone)
上面 Bean 的定义使用有 3 个参数的构造函数来创建对象(因为有 3 个 <constructor-arg>
),找到了 2 个这样的构造函数,用了第一个语法上符合条件的构造函数来创建对象。但是在我们看来 40 应该是 age,最后 age 却是 1234567,与期望的不一样,也就是构造函数的断定上出现了歧义。如果构造函数有歧义的时候,可以指定构造函数的参数类型,用于确定要使用的构造函数:
1 | <bean id="customer" class="com.xtuer.beans.Customer"> |
这次就能明确指定要使用的构造函数是 Customer(String name, int age, String telephone)