`

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数飞网络投票评选系统2022版.zip.zip

    2、采用J2EE结构,java语言开发,java为管理系统开发主流。 3、运行**台windows + mysql5 + tomcat6 + jre16 。 4、本系统默认30人同时在线,单个tomcat服务可做到500个并发在线。如果企业在线人数需要达到千级别,...

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

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

    java投票管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目源码

    TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 二、功能介绍 如博客中介绍 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 2、开发环境为TOMCAT7.0,Myeclipse8.5...

    Java运行环境 Java SE Runtime Environment 8.0.172.x64官方多语言正式版

    这些以 Java 编程语言编写的应用程序和可从浏览中访问的应用程序称为小程序。公司还将 Java 小程序用于内部网应用程序和其他电子商务的解决方案。所有主要行业的公司都在使用 Java。无论是部署在手机、嵌入式设备、...

    Java运行环境 Java SE Runtime Environment 8.0.172.x86官方多语言正式版

    这些以 Java 编程语言编写的应用程序和可从浏览中访问的应用程序称为小程序。公司还将 Java 小程序用于内部网应用程序和其他电子商务的解决方案。所有主要行业的公司都在使用 Java。无论是部署在手机、嵌入式设备、...

    网络投票评选系统.7z

    2、采用J2EE结构,Java语言开发,Java为管理系统开发主流。 3、运行**台Windows + Mysql5 + Tomcat6 + Jre16 。 4、本系统默认30人同时在线,单个Tomcat服务可做到500个并发在线。如果企业在线人数需要达到千级别,...

    数飞网络投票评选系统2012版.rar

    2、采用J2EE结构,java语言开发,java为管理系统开发主流。 3、运行**台windows mysql5 tomcat6 jre16 。 4、本系统默认30人同时在线,单个tomcat服务可做到500个并发在线。如果企业在线人数需要达到千级别,我们可...

    基于SpringBoot和vue3的在线投票系统

    后端采用了Spring Boot框架,这是一个基于Java语言的开发框架,用于构建快速、高效的Java应用程序。 前端采用了Vue 3框架,这是一个流行的JavaScript框架,用于构建用户界面。 功能特点: 用户认证与授权:系统提供...

    数飞网络投票评选系统修复版

    2、采用J2EE结构,Java语言开发,Java为管理系统开发主流。 3、运行**台Windows + Mysql5 + Tomcat6 + Jre16 。 4、本系统默认30人同时在线,单个Tomcat服务可做到500个并发在线。如果企业在线人数需要达到千级别,...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例004 验证Java开发环境 7 实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发工具 11 实例007 下载最新的Eclipse 11 实例008 为最新的Eclipse安装中文语言包 12 实例009 活用...

    #ssm144mysql在线投票系统wlw.zip

    这些项目采用Java语言和SSM框架,是一系列功能丰富的系统。无论是在线考试、医院分诊管理,还是线上会议、志愿者服务平台,或者是学生请假管理、网约车用户服务平台,这些项目都充分利用了SSM框架的优势,为用户提供...

    Java Web入门经典第八章源代码-by 南邮-陈杨

    第8章?使用表达式语言(EL) 165 ?视频讲解:72分钟8.1 EL概述 165...182 8.7.1 应用EL访问JavaBean属性 182 8.7.2 应用EL表达式显示投票结果 183 8.7.3 应用EL显示用户的登录状态 184 8.8 小结 184 8.9 习题 185

    python195框架的课堂投票系统.zip

    Python语言作为一种高级编程语言,具有简洁、可读性强的特点,使得开发者可以更加专注于解决问题的逻辑。同时,Python拥有丰富的开源库和框架,如Django、Flask、OpenCV等,为项目开发提供了强大的支持。 这些项目...

    JAVA-基于jsp的新闻发布系统(论文)

     该类系统大约占60% 的分额,其主要特点是前台采用编程语言动态读取数据库的内容,随时更新,该类系统设计简单,适合大多数中小企业建站需要,通用性不强,一般需要量身定做,不适合大型新闻站点,当用户过多时,编程语言...

    一个用struts+spring+hibernate编写的bbs源码

    1、跨平台:天乙社区完全具有java语言跨平台的特性,可以方便的运行在windows、linux、unix等操作系统上。 2、支持多数据库:天乙社区6.0采用了Hibernate作为数据库持久化的解决方案,支持DB2、PostgreSQL、...

    java简易投票系统源码下载-awesome-rust-cn:Rust生态圈--Rust资源大全:精选的Rust代码和资源列表

    java简易投票系统源码下载 Rust资源大全 Rust特性 Rust作为新一代系统级编程语言,聚焦内存"安全"、"并发"、"实用"的设计原则。 Rust核心概念是"不可变"、"所有权"、"Trait"。 Rust不玩虚拟机和垃圾回收,通过"不可...

    BBS-CS 天乙社区 v6.0(含源码)

    一套基于JAVA技术的网络虚拟社区,采用了Hibernate+Spring+Struts的轻量级J2EE框架,较5.x的内核有又了很大的提高,主要特点有: 1、跨平台:天乙社区完全具有java语言跨平台的特性,可以方便的运行在windows、...

    BBS-CS 天乙社区 v6.0.1(含源码)

    天乙社区6.0是一套基于JAVA技术的网络虚拟社区,采用了Hibernate+Spring+Struts的轻量级J2EE框架,较5.x的内核有又了很大的提高,主要特点有: 1、跨平台:天乙社区完全具有java语言跨平台的特性,可以方便的...

Global site tag (gtag.js) - Google Analytics