Spring入门学习——为集合元素指定数据类型
来源:互联网 发布:php flash播放mp4 编辑:程序博客网 时间:2024/06/11 07:39
package com.cgy.springrecipes.sequence;
import java.text.DecimalFormat;
import java.util.List;
public class SequenceGenerator {
private PrefixGenerator prefixGenerator;//PrefixGenerator类代码在前面博客
private List<Object> suffixes;
private int initial;
private int counter;
public SequenceGenerator() {}
public SequenceGenerator(PrefixGenerator prefixGenerator) {
this.prefixGenerator = prefixGenerator;
}
public void setPrefixGenerator(PrefixGenerator prefixGenerator) {
this.prefixGenerator = prefixGenerator;
}
public void setSuffixes(List<Object> suffixes) {
this.suffixes = suffixes;
}
public void setInitial(int initial) {
this.initial = initial;
}
public synchronized String getSequence() {
StringBuffer buffer = new StringBuffer();
buffer.append(prefixGenerator.getPrefix());
buffer.append(initial + counter++);
DecimalFormat formatter = new DecimalFormat("0000");
for(Object suffix : suffixes) {
buffer.append("-");
buffer.append(formatter.format( (Integer)suffix) );
}
return buffer.toString();
}
}
运行发现,黄色高亮的代码行报错,java.lang.ClassCastException,其原因是Bean配置文件中,默认集合元素的类型都是String,因此当试图转为Integer时失败,此时正需要指定元素类型。<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<constructor-arg>
<bean class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"/>
</bean>
</constructor-arg>
<property name="suffixes">
<list>
<value>5</value>
<value>10</value>
<value>20</value>
</list>
</property>
<property name="initial" value="10000"/>
</bean>
</beans>
使用<value>标记的type属性指定元素类型为int,运行成功,输出:<property name="suffixes">
<list>
<value type="int">5</value>
<value type="int">10</value>
<value type="int">20</value>
</list>
</property>
或者使用在集合标记中使用value-type指定所有元素的数据类型达到同样效果
<property name="suffixes">
<list value-type="int">
<value>5</value>
<value>10</value>
<value>20</value>
</list>
</property>
在Java1.5以及更高的的版本上,可以用存储整数的类型安全集合定义suffixes
Spring将通过反射读取集合的类型信息,不再需要指定集合标记中的<value-type>属性。private List<Integer> suffixes;
- Spring入门学习——为集合元素指定数据类型
- Spring入门学习——指定Bean引用
- Spring入门学习——使用工厂Bean和Utility Schema定义集合
- 指定集合元素的类型
- java集合删除指定元素
- 集合中除去指定元素
- Java入门(6)——集合、基本数据类型和引用数据类型的相互转换
- Java入门(6)——集合、基本数据类型和引用数据类型的相互转换
- Redis学习手册——有序集合(Sorted Sets数据类型)
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- 给定N个整数集合是否存在两个其和刚好为指定常数的元素
- slice() 把匹配元素集合缩减为指定的指数范围的子集
- 为指定元素添加一级父元素
- 集合-请为集合指定初始容量
- Java学习之使用集合实现对字符串中元素指定格式输出
- Clojure 学习入门(18)—— 数据类型
- java入门学习(2)—基本数据类型
- Spring学习笔记——入门
- CentOS给予port端口权限(搭建web…
- Spring入门学习——解决构造函数歧义
- 新浪博客分栏显示功能的测试
- Spring入门学习——指定Bean引用
- 用WebSocket接收服务器数据并控制W…
- Spring入门学习——为集合元素指定数据类型
- 添加button和onclicklistener后Att…
- Spring入门学习—— 一些概念
- 科学论文类型分类(letter, p…
- MySQL:索引工作原理
- Spring入门学习——使用Spring的FactoryBean创建Bean
- JavaScript之eval函数
- Three.js使用Blender导出json文件U…
- Spring入门学习——使用工厂Bean和Utility Schema定义集合