论坛首页 Java企业应用论坛

Java技巧之双括弧初始化

浏览 27669 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-07-03  
呵呵 值得学习 感谢下lz!
0 请登录后投票
   发表时间:2009-07-03   最后修改:2009-07-03
初始化List和Set, 如下用法不是更自然?:

new HashSet<String>(Arrays.asList("a","b","c"));


初始化Map,用{{..}}倒是还可以

0 请登录后投票
   发表时间:2009-07-03  
个人觉得实际使用意思不大
0 请登录后投票
   发表时间:2009-07-03   最后修改:2009-07-03
个人觉得实际使用意义不大
用法怪异不说,还多了个匿名类
0 请登录后投票
   发表时间:2009-07-03  
aaron7524 写道
个人觉得实际使用意思不大

我也觉得
我喜欢程序简单 易懂 一目了然
这样  可维护性好得多 不会导致下一个维护系统的同事费老半天劲才弄明白自己写得是什么意思 
有的系统本身业务就已经够复杂了,代码语法又搞得那么诡异,还让不让人活了
当然 楼主精神值得肯定  也让我等开了眼界 多学了点东西~
0 请登录后投票
   发表时间:2009-07-03   最后修改:2009-07-03
moonskyfox 写道
aaron7524 写道
个人觉得实际使用意思不大

我也觉得
我喜欢程序简单 易懂 一目了然

在初始化集合时,使用双括弧初始化才是更简单,一目了然的方法吧? 只不过这种方法不是规范的,所以不少人不知道。

Java也在不断的改进自己的语法,让文法更自然,简洁。就好比Java1.5在语法上的具大改进,
如:
1. enum关键字的使用让我们从Enumeration类中解放,
2. auto boxing让基础类和它的对象类合二为一,
3. iteration方法的改进让我们省去了iterator方法,而是直接用for(String a : aList)这样的写法。
4. aMathod(String... param)数组参数的使用使参数传递更加方便。

JDK7(现在是preview),又对语法有了进一步的简化,可以参考http://dlinsin.blogspot.com/2009/03/jdk-7-language-changes-are-coined.html。 所以,指不定哪一天,我们初始化集合时,可以直接这样写:
List<String> a = {"abc", "bcd"};
Set<Integer> a = {6,36,28,89,28};
Map<String, Obj> a = {"name":new Obj(1), "name2":new Obj(2)};
List<Obj> a = {new Obj(1), new Obj(2)};
等等。。。这多一目了然哪。

当我头一次看到这写法的时候,我很感叹那些发现这种写法的人,以及里面所蕴含的原理。明明原理都是知道的,为什么我自己没有想出来? 说明基础的应用比较死板,不灵活,也说明过于对同一语言语法的依赖。比如Python语法中,同一个功能可以有多种不同写法实现,有时候初学者10几行完成的功能,高手短短一行就解决了。这在我学习Python的时候感到很惊奇的。

moonskyfox 写道

这样  可维护性好得多 不会导致下一个维护系统的同事费老半天劲才弄明白自己写得是什么意思 
有的系统本身业务就已经够复杂了,代码语法又搞得那么诡异,还让不让人活了

我也很同意这个观点,也许正是因为JAVA在语法上的高度统一,才始得它在行业内比较流行。不管高手菜鸟,写出来的步骤都是大同小异的。用Python就不行了,高手写出来的东西,短短几行,没有一定的功底就很难看个明白。给在较大项目的唯护上带来麻烦。这也说明Python在小规模,快速开发的项目中更有优势。

个人意见,欢迎拍砖
2 请登录后投票
   发表时间:2009-07-03  
jmock里就是这么初始化Expectations的
0 请登录后投票
   发表时间:2009-07-03  
moonskyfox 写道

这样  可维护性好得多 不会导致下一个维护系统的同事费老半天劲才弄明白自己写得是什么意思 
有的系统本身业务就已经够复杂了,代码语法又搞得那么诡异,还让不让人活了
当然 楼主精神值得肯定  也让我等开了眼界 多学了点东西~


的确, 在我看来, Java之所以能成为如此流行的工业语言, 和它严谨的几乎没什么奇技淫巧可玩的语法是有很大关系的
0 请登录后投票
   发表时间:2009-07-03  
能够减少代码行数就是好的,哪怕就1行
0 请登录后投票
   发表时间:2009-07-03  
觉得楼主人还是不错的~哈哈~学习~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics