构造方法与setter方法
Posted yimengxianzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造方法与setter方法相关的知识,希望对你有一定的参考价值。
上一个随笔提到了constructor-arg子标签,此随笔将会介绍一些类型的赋值方法
①String类型、基本数据类型或其包装类都可以使用value标签属性赋值
String类型和基本类型的操作如下:
//User.java文件中的代码 public User(int id){ System.out.println("序号"+ id); } public User(String name){ System.out.println("姓名" + name); }
<!-- application.xml文件中的代码--> <bean class="com.zzj.ov.User"> <constructor-arg type="int" value="21"></constructor-arg> <constructor-arg type="String" value="朱祖杰"></constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
②类类型(自定义类型)
类类型的操作如下(以Date类型为例):
//User.java文件中的代码 public User(Date birth){ System.out.println("生日" + birth); }
<!-- application.xml文件中的代码--> <!-- 将Date类引用 --> <bean name="bi" class="java.util.Date"></bean> <!-- 使用ref--> <bean class="com.zzj.ov.User"> <constructor-arg ref="bi"></constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
③数组类型
constructor-arg ——>array——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)
数组类型的操作如下:
//User.java文件中的代码
public User(Object[] array){
System.out.println("数组");
for(Object object: array){
System.out.println(object);
}
}
<!-- application.xml文件中的代码--> <!-- 将Date类引用 -->
<bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User"> <constructor-arg> <array> <!--同样的基本类型和String类型直接使用value赋值--> <value>12</value> <value>Tom</value> <!--类类型使用ref引用--> <ref bean="bi"/> <!--或者直接使用bean将类引用--> <bean class="java.lang.String"> <constructor-arg value="HAHA"></constructor-arg> </bean> </array> </constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
④集合类型
List:constructor-arg ——>list——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)
//User.java文件中的代码
public User(List<Object> list){ System.out.println("List集合"); for(Object object: list){ System.out.println(object); } }
<!--application.xml文件中的代码-->
<bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User"> <constructor-arg> <list> <value>12</value> <value>Tom</value> <ref bean="bi"/> <bean class="java.lang.String"> <constructor-arg value="HAHA"></constructor-arg> </bean> </list> </constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); }
}
Set:constructor-arg ——>set——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)
//User.java文件中的代码 public User(Set<Object> set){ System.out.println("Set集合"); for(Object object: set){ System.out.println(object); } }
<!--application.xml文件中的代码--> <bean name="bi" class="java.util.Date"></bean> <bean class="com.zzj.ov.User"> <constructor-arg> <set> <value>12</value> <value>Tom</value> <ref bean="bi"/> <bean class="java.lang.String"> <constructor-arg value="HAHA"></constructor-arg> </bean> </set> </constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
Map:constructor-arg ——>map——>
entry:key或value是String类型、基本数据类型或其包装类,则分别使用entry标签中key和value标签属性
entry:key或value是类类型(自定义类型),应该使用对相应的key-ref或value-ref
//User.java中的代码 public User(Map<String,Object> map){ System.out.println("Map集合"); Set<String> keys = map.keySet(); for(String key : keys){ System.out.println(key + ":" + map.get(key)); } }
<!--application.xml文件中的代码--> <bean name="bi" class="java.util.Date"></bean> <bean class="com.zzj.ov.User"> <constructor-arg> <map> <entry key="name" value="Tom"></entry> <entry key="age" value="12"></entry> <entry key="birth" value-ref="bi"></entry> </map> </constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
⑤Properties:constructor-arg ——>props——>prop 只能配置String类型
//User.java文件中的代码如下 public User(Properties properties){ System.out.println(properties.get("driver")); System.out.println(properties.get("userName")); System.out.println(properties.get("password")); System.out.println(properties.get("url")); }
<!--application.xml文件中的代码--> <bean name="bi" class="java.util.Date"></bean> <bean class="com.zzj.ov.User"> <constructor-arg> <props> <prop key="driver">com.mysql.jdbc.Driver</prop> <prop key="userName">root</prop> <prop key="password">root</prop> <prop key="url">jdbc:mysql://127.0.0.1:3306/test</prop> </props> </constructor-arg> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
⑥setter方法(两种,需要在命名空间中选中p)
//User.java中的代码 private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }
<!--application.xml文件中的代码--> <!--第一种直接在bean标签里用p方法,第二种使用property标签--> <bean class="com.zzj.ov.User" p:id-ref="bi" p:name="Tom"> <property name="name" value="Tom"></property> <property name="id" ref="bi"></property> </bean>
//测试文件的代码 public class Test { public static void main(String[] args){ new ClassPathXmlApplicationContext("application.xml"); } }
以上是关于构造方法与setter方法的主要内容,如果未能解决你的问题,请参考以下文章
java的idea快捷键生成getter和setter有构造参数无构造参数重写toString方法