`

JAVA7语言特性投票的结果

    博客分类:
  • Java
阅读更多

上周javapolis举行了一次关于JAVA7中可能支持的语言特性的投票,该投票涉及到十中JAVA7 
中可能的语法增强(这里不包括闭包,后面将单独列出).对于每种语法特性你需要回答"Do you 
support this language change?",答案可以是"YES","NO","Maybe"三者之一. 
下面罗列出这十种语法特性以及投票结果: 
1.Property declaration 
属性声明可以允许如下的代码: 

Java代码 
  1. public class Person {  
  2.  public property String forename;  
  3.  public property int age;  
  4. }  

然后就可以免去书写setter与getter方法. 
投票结果: 
62 YES,76 NO,8 Maybe 

2.Property access 
属性访问是对上面语法的进一步加强,允许通过"."来访问被property修饰的字段. 
Java代码 
  1. public class Person {  
  2.  public property String forename;  
  3.  public property int age;  
  4. }  
  5. Person p = new Person();  
  6. p.forename = "Stephen";   // calls setter  
  7. String str = p.forename;  // calls getter  

投票结果: 
38 YES,99 NO,4 Maybe 

个人观点:由于现在IDE的功能足够强悍,自动生成setter与getter的功能很易用.自动补全 
的功能也很完美,所以我觉得上面两个语法糖并没有存在的必要.
 


3.Improve generics 
这个是对目前泛型产生的一些比较"诡异"的语法进行适当的修正. 
譬如下面一些看似合理的代码但目前编译通不过: 
Java代码 
  1. // this doesn't compile today - could be made to  
  2. public class MyClass {  
  3.  public void process(List<String> list) {...}  
  4.  public void process(List<Integer> list) {...}  
  5. }  
  6. // this doesn't compile today - could be made to  
  7. if (list instanceof List<String> { ... }  

可以参看这篇帖子:http://www.iteye.com/topic/110189 
投票结果: 
112 YES,11 NO,4 Maybe 

个人观点:由于目前JAVA的泛型究其本质,只是编译器做的一个"语法糖"而已. 
所以有很多不尽人意的地方,而且由于泛型的引进,JAVA一些本来很优雅的语法也起了 
"诡异"的改变,有兴趣的可以看看<JAVA 语言规范>第三版中关于继承以及方法重载. 
可以看到本来在JAVA里面很清晰的两个概念,因为泛型的引进一些细节方面变得很诡异了 
(至少我是这么认为).所以,如果有可能,真希望JAVA能像C#一样在虚拟机层次支持泛型, 
这样目前的很多问题就可以迎刃而解了.
 

4.Access List and Map using [] 
通过"[]"来访问List与Map,如下: 
Java代码 
  1. List<String> list = ...  
  2. String first = list[0];  
  3.   
  4. Map<String, Integer> map = ...  
  5. Integer value = map["Key"];  

投票结果: 
78 YES,46 NO,13 Maybe 


个人观点:我比较反感这种"局部特殊化"的语法特性,与其将List,Map特殊化,还不如 
直接在JAVA中允许重载运算符来的爽快.
 


5,6.Extension methods and chaining 
基本上就是说允许在已有的类中添加方法,也是个"语法糖";另外允许void方法也能使用 
方法链的方式.如下: 
Java代码 
  1. // current code  
  2. List<String> list = ...  
  3. Utils.sort(Utils.filter(list, param));  
  4.   
  5. // with the language change  
  6. list.filter(param).sort();  

投票结果: 
20 YES,63 NO,7 Maybe 

个人观点:真看不出除了把JAVA语法弄复杂外还有什么好处... 


7.String switch 
让switch语句支持String 

投票结果: 
137 YES,17 NO,10 Maybe 
个人观点:既然String已经很特殊了,不妨让它更特殊点...长得更像基本类型些 

8.Typedef 
类似于C语言中的typedef 
Java代码 
  1. import java.util.Map<String, Integer> as CodeValueMap;  

投票结果: 
17 YES,94 NO,3 Maybe 

个人观点:无语... 

9.Multi-catch 
让catch语句可以批量捕获异常,如下: 
Java代码 
  1. try {  
  2. catch (IOException | SQLException ex) {  
  3. }  

投票结果: 
136 YES,17 NO,7 Maybe 

个人观点:我喜欢^_^... 

10.Null-handling 
允许链式方法调用中不抛出NullException,如下: 
Java代码 
  1. // current code  
  2. String result = a.b.c;    // can throw NPE  
  3. // with language change  
  4. String result = a?.b?.c;  // can't throw NPE  

投票结果: 
19 YES,26 NO,3 Maybe 

个人观点:Maybe? Maybe No... 


另外,javapolis上还有一个专门针对闭包("Closure")的投票,与上面不同的是.这个投票 
的选项是: 
    *  No change (no closures) 
    *  Simpler inner classes, and specific new statements (CICE + ARM) 
    *  Full closures, with library control statements (BGGA/FCM+JCA) 
投票结果是: 
19 No change,30 CICE,24 BGGA/FCM+JCA 

个人观点:说实话,我不太懂Closure,虽然看过一些相关资料(八卦).不过由于 
JAVA泛型的缘故,从直觉上我选BGGA/FCM+JCA:-)
 


呵呵,对于这些可能在JAVA7中出现的语法改变,你有什么看法呢? 

ps:另外我觉得如果能在JAVA中实现类似C++中的const关键词可以带来不少方便

分享到:
评论

相关推荐

    Java语言做的投票管理系统

    【Java语言制作的投票管理系统】 本投票管理系统是一个基于Java编程语言开发的应用程序,它主要用于组织、管理和统计各种类型的投票活动。Java的选择是因为其跨平台的特性,使得该系统能够在多种操作系统上运行,如...

    java编写的学生会投票系统

    《基于Java的学生会投票系统详解》 在信息技术日益发展的今天,编程已经成为了一项重要的技能,尤其是在教育领域,学生们经常需要通过实践项目来深入理解和掌握编程语言。本文将详细解析一个用Java编写的“学生会...

    投票管理系统_java_投票系统_投票_投票管理系统_

    【标题】"投票管理系统_java_投票系统_投票_投票管理系统_" 涉及的主要知识点是基于Java技术构建的投票管理软件。这样的系统通常用于组织和实施各种类型的投票活动,包括选举、调查等,具备设置候选人、执行投票以及...

    Java 在线投票系统

    首先,Java作为后端开发语言,其强大的面向对象特性和丰富的类库为构建此类系统提供了坚实的基础。系统可能采用了Servlet和JSP(JavaServer Pages)来处理HTTP请求和响应,Servlet用于接收和处理客户端的投票请求,...

    在线投票小程序java源代码

    【Java投票小程序】是本文将要探讨的核心主题,它是一个基于Java编程语言开发的客户端应用程序。这个小程序的主要功能是实现在局域网内的在线投票功能,允许用户发起投票活动并参与投票。通过深入分析和解释这个项目...

    java的投票系统代码

    Java投票系统是一个基于Java编程语言实现的用于模拟选举或民意调查的应用程序。在这个系统中,开发者通常会使用Java的核心概念和技术来设计和实现用户界面、数据处理和存储等功能。以下是一些关键的知识点: 1. **...

    JAVA课程设计 投票系统

    1. **Java语言特性**:Java是一种跨平台、面向对象的语言,其可移植性使得它在软件开发领域广泛应用。Java的这些特性为开发投票系统提供了稳定的基础。 2. **JBuilder2006**:这是一个集成开发环境(IDE),用于...

    java编写的投票小程序

    首先,Java是一种面向对象的编程语言,它的核心特性包括封装、继承和多态,这使得代码易于维护和扩展。在这个投票小程序中,我们可以预见到类(Class)的概念被用于封装投票的相关逻辑和数据。 描述中的“单选按钮...

    java投票管理系统

    1. **Java语言基础**:Java是一种跨平台的面向对象编程语言,以其“一次编写,到处运行”的特性而闻名。Java投票管理系统是用Java编写的,这意味着它可以在任何支持Java的平台上运行,如Windows、Linux或Mac OS。 2...

    投票管理系统的Java代码

    一、Java语言基础 Java是一种面向对象的高级编程语言,具有“一次编写,到处运行”的特性。其语法简洁明了,支持多线程,使得并发处理投票数据成为可能。在投票管理系统中,Java的基础组件如集合框架、异常处理机制...

    java 投票系统

    总的来说,Java投票系统是一个涵盖了Web开发、数据库管理和权限控制等多个方面的综合项目,它展示了Java语言在实际应用中的强大功能和灵活性。通过这样的系统,学校或班级可以方便地组织在线投票活动,提高管理效率...

    java EE web投票

    Java EE Web 投票系统是一种基于Java企业版(Java EE)技术构建的Web应用程序,用于实现在线投票功能。这个系统通常包含多个组件,如前端界面、后端服务器逻辑以及数据库存储,以支持用户参与投票、查看结果以及管理...

    Java基于同态加密的匿名电子投票选举系统demo

    投票方将加密后票送到计票方,计票方利用同态特性进行计算,得到汇总的结果;公示方拿到该结果后解密之,即得总票数。公示方不知道单独每张票的情况,从而实现了匿名;计票方计算过程解不出投票记录,于是可以防止...

    用java编写的投票系统

    Java的跨平台特性使得开发的投票系统可以在不同的操作系统上运行,如Windows、Linux或MacOS,这为用户提供了极大的便利性。 在Java Web开发中,通常会使用Servlet和JSP(JavaServer Pages)技术来处理HTTP请求和...

    web项目-投票系统(java编写)

    【web项目-投票系统(java编写)】是一个基于Java技术开发的网络应用,主要目标是实现一个功能完善的在线投票系统。这个系统设计了不同层次的权限管理,以满足不同用户群体的需求,例如普通用户和管理者。在这样的系统...

    xuanju.zip_java投票_xuanju_投票

    本项目名为"java投票_xuanju_投票",显然它是一个使用Java编程语言实现的投票系统。Java因其跨平台性、面向对象特性和丰富的类库而被广泛用于构建各种类型的应用,包括投票系统。下面我们将深入探讨这个系统的可能...

    【源码已发布】Java自动投票工具

    【源码已发布】Java自动投票工具是一款基于Java编程语言开发的应用程序,它主要用于实现自动化投票功能。在互联网上,各种评选活动、竞赛或者调查常常需要用户参与投票,这款工具可以减轻用户手动点击投票的繁琐过程...

    java投票系统的设计

    总结来说,设计一个Java投票系统,我们需要利用Java的面向对象特性,结合Spring框架、数据库访问技术以及前端开发工具,来构建完整的系统架构。同时,注意系统的安全性、稳定性和扩展性,以满足实际需求。通过不断的...

    投票管理系统

    本文将深入探讨一个使用Java语言编写的投票管理系统的实现细节。 首先,我们要理解Java作为一种跨平台的编程语言,其强大的面向对象特性和丰富的类库使得开发这样的系统成为可能。在投票管理系统中,Java的类和对象...

Global site tag (gtag.js) - Google Analytics