- 浏览: 546497 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wa114d:
楼主工作几年了,好厉害
一个面试官对面试问题的分析 -
wobuxiaole:
Good,非常好
30岁前男人需要完成的事 -
小逗逗:
Good,非常好
30岁前男人需要完成的事 -
invincibleLiu:
好帖,要顶!(别投我隐藏啊,这是对BBS最原始一种支持)
Java:synchronized修饰符在静态方法与非静态方法上的区别 -
fayedShih:
第三题,不知道对不对
import java.util.con ...
企业牛逼面试题目 高手进来讨论答题
接下来看Transformer组。
Transformer
ChainedTransformer
SwitchTransformer
TransformerUtils
我们有时候需要将某个对象转换成另一个对象供另一组方法调用,而这两类对象的类型有可能并不是出于同一个继承体系的,或者说出了很基本的Object之外没有共同的父类,或者我们根本不关心他们是不是有其他继承关系,甚至就是同一个类的实例只是对我们而言无所谓,我们为了它能够被后续的调用者有意义的识别和处理,在这样的情形,我们就可以利用Transformer。除了基本的转型Transformer之外,Commons Collections还提供了Transformer链和带条件的Transformer,使得我们很方便的组装出有意义的转型逻辑。
假定我们在处理员工聘用时,需要将原来的Applicant对象转换为Employee对象,而Applicant类和Employee类无论继承关系、字段内容、具体业务职能等等都不是同一派系的,只是某些字段是相关的,且要求必要的转换,那么这个时候我们使用Transformer就可以比较方便的实现这项功能,并且由于它的实现是灵活的、模块化的,使得今后的维护也变得清晰和易于处理。代码如下:
/** Applicant.java */
package sean.study.commons.collections;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
public class Applicant {
private String name;
private int age;
private String applyFor;
public Applicant() {
}
public Applicant(String name, int age, String applyFor) {
this.name = name;
this.age = age;
this.applyFor = applyFor;
}
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("name", name)
.append("age", age)
.append("applyFor", applyFor)
.toString();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getApplyFor() {
return applyFor;
}
public void setApplyFor(String applyFor) {
this.applyFor = applyFor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package sean.study.commons.collections;
import java.util.Date;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.commons.lang.time.DateFormatUtils;
public class Employee {
private String name;
private int age;
private Date dateJoined;
private String grade;
private double salary;
public Employee() {
}
public Employee(String name, int age, Date dateJoined, String grade, double salary) {
this.name = name;
this.age = age;
this.dateJoined = dateJoined;
this.grade = grade;
this.salary = salary;
}
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("name", name)
.append("age", age)
.append("dateJoined", DateFormatUtils.format(dateJoined, "yyyy-MM-dd"))
.append("grade", grade)
.append("salary", salary)
.toString();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getDateJoined() {
return dateJoined;
}
public void setDateJoined(Date dateJoined) {
this.dateJoined = dateJoined;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
package sean.study.commons.collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.SwitchTransformer;
import org.apache.commons.lang.StringUtils;
public class TransformerUsage {
public static void main(String[] args) {
demoTransformerUsage();
}
public static void demoTransformerUsage() {
System.out.println(StringUtils.center(" demoTransformerUsage ", 40, "="));
// data setup
Applicant[] applicants = new Applicant[] {
new Applicant("Tony", 26, "Developer"),
new Applicant("Michelle", 24, "Tester"),
new Applicant("Jack", 28, "Project Manager")
};
List appList = Arrays.asList(applicants);
// predicate setup
Predicate isDeveloper = new Predicate() {
public boolean evaluate(Object obj) {
Applicant app = (Applicant) obj;
return "Developer".equalsIgnoreCase(app.getApplyFor());
}
};
Predicate isTester = new Predicate() {
public boolean evaluate(Object obj) {
Applicant app = (Applicant) obj;
return "Tester".equalsIgnoreCase(app.getApplyFor());
}
};
Predicate isPM = new Predicate() {
public boolean evaluate(Object obj) {
Applicant app = (Applicant) obj;
return "Project Manager".equalsIgnoreCase(app.getApplyFor());
}
};
Predicate[] checkApplyFor = new Predicate[] {
isDeveloper,
isTester,
isPM
};
// transformer setup
发表评论
-
妙用Commons良药 StringUtils
2011-03-08 10:48 1320来自:http://lighter.iteye.c ... -
分享 commons io 工具类 代码
2011-03-04 17:53 1148来自:http://www.iteye.com/topic/5 ... -
Jakarta Commons笔记] 结语
2008-11-12 11:15 1278在前面的随笔中,我们一起过了一遍Jakarta Common ... -
Commons Collections - Transformer组 补充
2008-11-12 11:11 1290// transformer setup T ... -
[Jakarta Commons笔记] Commons Collections - Closure组
2008-11-12 10:31 1577接下来看Closure组。 Closure Chaine ... -
[Jakarta Commons笔记]Commons Collections - Predicate
2008-11-12 10:17 2042接下来看Predicate组 Predicate And ... -
Commons Collections - Comparator组
2008-11-12 09:55 1372接下来我们会讲到辅助类,首先看Comparator组。 R ... -
Commons Collections - Collection 组
2008-11-12 09:43 1322接下来看看Collection组。 TypedColle ... -
[Jakarta Commons笔记] Commons Collections - Map组
2008-11-12 09:39 1574接下来看Map组。 BidiMap MultiMap L ... -
[Jakarta Commons笔记] Commons Collections - Buffer组
2008-11-12 09:23 1403来看Buffer组。 Buffer BlockingBuf ... -
[Jakarta Commons笔记] Commons Collections - Bag组
2008-11-11 17:48 1296先来看Bag组。 Bag HashBag BagUtils ... -
[Jakarta Commons笔记] Commons Collections
2008-11-11 17:30 2342Commons Collections,又是 ... -
[Jakarta Commons笔记] 代码范例 - BeanUtils
2008-11-11 16:56 1226假定我们有如下两个标准的JavaBean: /** Ad ... -
[Jakarta Commons笔记] Commons BeanUtils
2008-11-11 16:44 1935Jakarta Commons项目提供了相当丰富的API,我们 ... -
[Jakarta Commons笔记] org.apache.commons.lang.time
2008-11-11 16:14 1818好了,来看我在Common Lang中最后要讲的一个包:org ... -
[Jakarta Commons笔记] org.apache.commons.lang.math
2008-11-11 16:12 1809在Jakarta Commons中,专门处理数学计算的类分别可 ... -
[Jakarta Commons笔记] commons.lang.builder
2008-11-11 15:36 1104在前面的专题文章中,我们一起过了一遍org.apache.c ... -
[Jakarta Commons笔记] 代码范例 - ArrayUtils StringUtils
2008-11-11 15:34 1681数组是我们经常需要使用到的一种数据结构,但是由于Java本身 ... -
[Jakarta Commons笔记] Commons Lang
2008-11-11 15:32 2687跟java.lang这个包的作用类似,Commons Lang ... -
[Jakarta Commons笔记] 开篇
2008-11-11 13:45 1145在Java的世界,有很多(成千上万)开源的框架,有成功的,也 ...
相关推荐
《Apache Commons Collections 3.2.1:Java集合框架的强大扩展》 Apache Commons Collections是Apache软件基金会的一个项目,它提供了一系列强大的、用于处理Java集合框架的工具类和算法。在这个项目中,`commons-...
Commons Collections和Apache BeanUtils是Java开发中常用的两个库,它们为开发者提供了丰富的工具类和功能,使得处理集合对象和Bean属性变得更加便捷。这两个库在Java Web开发中扮演着重要角色,尤其是在构建MVC框架...
Apache Commons Collections是一个Java库,它提供了对集合框架的扩展,增加了许多实用功能,极大地丰富了Java编程中的数据处理能力。这个"commons-collections-3.2.1-bin"压缩包包含的是Apache Commons Collections ...
Commons Collections是Apache软件基金会开发的一个Java库,主要提供对集合框架的增强和扩展。这个库是Java标准集合接口的补充,增加了许多实用的功能,提高了代码的可读性和效率。"commons-collections4-4.1.jar"是...
Apache Commons Collections是一个强大的Java集合框架扩展库,它提供了对Java内置集合类的增强功能和新的数据结构。在本文中,我们将深入探讨`commons-collections-3.2.1`版本的相关知识点。 首先,`commons-...
《Apache Commons Collections 3.2源码解析》 Apache Commons Collections是Java开发中不可或缺的工具库,它极大地扩展了Java的内置集合框架,为开发者提供了更丰富的数据结构和算法实现。这个源码包,名为"commons...
《Apache Commons Collections 深入解析》 Apache Commons Collections 是一个功能丰富的 Java 库,它扩展了 Java 核心库中的集合框架,提供了大量的实用工具类和算法,为开发人员在处理各种数据结构时提供了极大的...
Apache Commons Collections是一个强大的Java集合框架扩展库,它提供了大量的接口和类来增强Java的内置集合。这个"commons-collections4-4.1-bin.zip"压缩包包含了Apache Commons Collections的源码和jar包,版本为...
Apache Commons Collections是一个强大的Java集合框架的扩展库,它为Java的内置集合类提供了大量实用工具和接口,极大地丰富了集合操作的功能。这个"commons-collections4-4.0.rar"文件是Apache Commons Collections...
《Apache Commons Collections 3详解》 Apache Commons Collections(简称Collections)是Apache软件基金会开发的一个Java类库,它为Java集合框架提供了丰富的扩展和实用工具。本文将深入探讨`commons-collections-...
Apache Commons Collections 4.4是Java开发人员常用的一个开源库,它是Apache软件基金会的一个项目,提供了许多实用的集合框架扩展,极大地丰富了Java标准库中集合类的功能。这个版本是4.4,属于项目的最新稳定版,...
Apache Commons Collections是一个非常重要的Java库,它为Java集合框架提供了大量的扩展和实用工具。这个库被称为"commons-collections4-4.0",表明它是Apache Commons Collections的第4个主要版本,版本号为4.0。这...
《Apache Commons Collections 4.4:Java编程的强大工具》 Apache Commons Collections,简称Collections,是Apache软件基金会开发的一个Java库,旨在提供对Java集合框架的扩展和增强。这个库包含了丰富的算法实现...
8. `org.apache.commons.collections.functors`:这个包提供了各种函数对象(Functor),它们可以作为谓词(Predicate)、工厂(Factory)、转换器(Transformer)等,用于实现函数式编程的模式。 9. `org.apache....
Apache Commons Collections是一个强大的Java库,它是Apache软件基金会的一部分,专门用于增强Java的集合框架。这个库提供了大量的实用工具类和算法,扩展了Java标准库中集合接口的功能,使得开发人员可以更加高效、...
《Aduna Commons Collections 2.7.0:Java编程中的集合框架增强库》 Aduna Commons Collections 是一个基于 Java 的开源库,它扩展了 Java 标准库中的集合框架,提供了更多的数据结构、算法和实用工具类。这个库在 ...
Apache Commons Collections是一个Java库,它提供了对集合框架的扩展,增加了许多实用功能。这个库的主要目标是增强Java标准集合接口的灵活性、性能和功能性。在"commons-collections4-4.4-bin.zip"中,我们获得了...
"commons-collections"是Apache软件基金会的一个开源项目,它提供了一系列强大的、实用的集合框架扩展,使得在Java编程中处理集合对象变得更加方便和灵活。这个jar包包含了多种实用的工具类和接口,扩展了Java标准...
Apache Commons Collections 4.0 API 是一个非常重要的Java库,它是Apache软件基金会开发的一个开源项目。这个库提供了大量的集合框架的扩展,使得开发者能够更高效、便捷地处理各种数据结构和算法。Apache Commons ...