对象定义
package com.godme.pojo;
public class Person {
private String name;
private String nickName;
private String firstName;
private String secondName;
public Person(String name) {
this.name = name;
}
public Person(String name, String nickName) {
this.name = name;
this.nickName = nickName;
}
public Person(String name, String nickName, String firstName, String secondName) {
this.name = name;
this.nickName = nickName;
this.firstName = firstName;
this.secondName = secondName;
}
public Person(String name, String firstName, String secondName){
this.name = name;
this.firstName = firstName;
this.secondName = secondName;
}
}
对象构造
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="justName" class="com.godme.pojo.Person">
<constructor-arg value="name"/>
</bean>
<bean name="twoArgs" class="com.godme.pojo.Person">
<constructor-arg value="name"/>
<constructor-arg value="nickName"/>
</bean>
<bean name="order" class="com.godme.pojo.Person">
<constructor-arg value="nickName"/>
<constructor-arg value="name"/>
</bean>
<bean name="index" class="com.godme.pojo.Person">
<constructor-arg index="1" value="nickName"/>
<constructor-arg index="0" value="name"/>
</bean>
<bean name="name" class="com.godme.pojo.Person">
<constructor-arg name="nickName" value="nickName"/>
<constructor-arg name="name" value="name"/>
</bean>
<bean name="both" class="com.godme.pojo.Person">
<constructor-arg index="0" name="name" value="name"/>
<constructor-arg index="1" name="nickName" value="nickName"/>
</bean>
</beans>
胡言乱语
这章抛出的问题是:如何准确的创建一个对象
或者这问题并不直接,因为无参构造然后进行属性注入,并不存在这种问题。
核心观点就是,如何通过构造方法,准确的构造一个类,尤其是多种构造方法如何选择。
这种问题在多入参,多构造,甚至是同类型上面有很大的随意性。 存在如下几个问题
- 对应关系:顺序不对,参数复制错位
- 类型错误:尤其是
int
和string
的各种表示,因为配置始终是字符串进行的传递
如配置,我们可以使用index
和name
,一个或者多个,去进行属性的指定,选择我们指定的构造方法,无误的进行构造。
还有一个好处是,ide
智能的进行检测,当乱写的构造不存在时,能够进行提示。