欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

闭包能让JAVA语言变得简洁吗?

程序员文章站 2022-04-19 13:53:35
...
    众所周知,JAVA语言一直因其语法上的简洁优雅(JAVA1.5中泛型的引入或多或少改变了这点)而被大部分人所喜爱.

    但另一方面,语法上的简洁也造成了使用上的一些不方便.譬如,你只想实现往控制台输出一个"Hello,world",你也得老老实实先写一个class,然后再写一个public static void main(String[] args)方法,最后才是System.out.println("Hello,world");
    而如果使用Python之类的语言,可能只需一行代码就搞定了.
    当然,上面这个例子看起来不是那么有说服力.

    不过如果你做过GUI开发的话,你就会感受到"Everything is an object"所带来的不便之处了.为了监听GUI事件并做出相应的反应,你会大量用到匿名类(而实际上你的目的只是要传入一个回调方法而已),这样不仅做了一些额外不必要的工作,也给代码的可读性造成一定影响.

    譬如这类的问题还有很多,Stevey写过一篇文章:名词的王国(Execution in the Kingdom of Nouns),用形象生动的语言描叙了为什么使用JAVA会让某些工作变得的啰嗦.他的观点是由于JAVA中的"everything is an object",在某些时候限制了我们用清晰而合理的表达方式来表述我们的思想.
在JAVA诞生以来,语法上最大的变动可能就是在JAVA 1.5中泛型的引入了.而且随着JAVA的开源,以后可能会有更多的元素被引入到JAVA语言里面来(官方的或非官方的).目前正在进行中的JDK7就有可能增加一些新的语言特性(见javapolis举行的关于JAVA7语言特性投票的结果),其中最重大的改变莫过于闭包的引入了.毫无疑问,这些语言特性的引入都是为了让我们这些Javaer活的更轻松一些.

    那么,闭包能改善目前JAVA语言所存在不足吗?就是说闭包能够让我们写出简单而易读的代码吗?要知道闭包并不是一个面向对象的东东.
Bruce Eckel在他的文章Will Closures Make Java Less Verbose里讨论了这个问题.并且在文章的末尾,他提出了一个很大胆的想法JAVA 3K(其实我也一直这么想的^_^):
引用

    我们知道Python有个Python 3000计划,这个Python 3000相对之前的Python有大幅度的修改,并且不兼容之前的Python语法,这样可以完全摆脱因考虑向后兼容性而带来的不必要的负担.那么我们为什么也搞个JAVA 3000呢?它与之前的JAVA有着类似的语法,并且也能运行在JVM上,但语法上与原有JAVA语言不兼容.在JAVA 3K里面我们可以有真正的泛型,闭包,并且可以丢弃掉int那些基本类型.对于那些想继续使用原有JAVA的人来说继续用就是了,而程序员想学习新的JAVA语言也很容易.


    你是如何看待这件事情的呢?


参考文章:
Execution in the Kingdom of Nouns
Seeking the Joy in Java
Will Closures Make Java Less Verbose
相关标签: Java