Varargs Collection Factory Method 参数集合工厂方法

原文地址
[url]http://www.c2.com/cgi/wiki?VarargsCollectionFactoryMethod[/url]

批注:比较短的一篇,中间使用了泛型,可变参数.需要Java1.5环境

如果DoubleBraceInitialization技巧中介绍的一样,Java在使用Collection上没有简单的语法,相比其他语言,Java创建一个集合需要大量的代码,这个技巧介绍的就是使用factory Methods去创建一个可变参数的集合获取方式.

原有Java代码模式

Set<String> fruit = new HashSet<String>();
fruit.add("banana");
fruit.add("pear");
fruit.add("apple");
doSomethingWith(fruit);



你可以写一个factory 方法进行代替

<T> Set<T> setOf(T... things) {
return new HashSet<T>(Arrays.asList(things));
}


通过传入可变数量的参数,然后返回所需要的Set集合.

进行调用的方式

doSomethingWith(setOf("banana", "pear", "apple"));

另外一种变形的方法:

<T> T populateCollection(Collection<T> c, T... things) {
c.addAll(Arrays.asList(things));
return c;
}


调用方式

populateCollection(new ArrayList<String>(), "Meh", "Mlah", "Hmm");

这个是用的泛型较为复杂.

其他相关的技巧:
OnceAndOnlyOnce
[url]http://www.c2.com/cgi/wiki?OnceAndOnlyOnce[/url]
DoubleBraceInitialization
[url]http://www.c2.com/cgi/wiki?DoubleBraceInitialization[/url]


个人理解:这种方式在J2ME无法使用,需要在J2EE上合理的使用,灵活的使用了泛型提供的便利,能够节约不少代码,不过真正只使用字符串添加的机会并不多,关键还是数据获取部分的设计,这里只是提供了便利的集合获取方法,如果参数较多,那就不太适合了..
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值