怎么给java代码瘦身_Eclipse Xtend对Java说:我帮你瘦身
Java程序员在使用Ruby编程时会有一种解放的感觉,一种从Java那繁琐的语法环境进入一个无拘无束、自由国度的感觉。随着Clojure和Scala等新语言的出现,这种对比的感觉会越来越强烈。Ruby在很短的时间里异军突起,很大的原因在于它的简洁和自由,比如下面一句代码:
File.new("testfile").each {|line| puts line[-1] }
如果用Java来写,不知道要写多少行。Bruce Tate在《七周七种语言》这本书中谴责Java说:“我的手指在流血,因为我不得不打出这样多的代码;我的眼睛在流血,因为我还要去读它们。”呵呵,说的很形象。
其实,Java并不是诚心在为难程序员,它一直在改进。而Eclipse基金会推出的一种叫做Xtend语言正是为了要简化Java的语法,减轻Java程序员的负担。
又一种新语言?不要担心。Xtend更像是一种模板语言。它紧密的和Eclipse IDE捆绑在一起,要使用它,你需要安装Eclipse的Xtend插件,Xtend代码并不是直接编译成JVM字节码的,当你在IDE编辑、保存Xtend代码时,它会自动的编译成相对应的Java代码。
在上图的右边窗口里,你可以检查生成的Java代码是不是符合你的预期,并可以通过它调试你的程序。
那Xtend究竟能帮助Java程序员做什么呢?面面俱到的介绍一种新语言是一种很复杂的事,我也不想考验各位的耐心。这里只举例说明几个大家一眼就能看出这种语言存在的价值的例子。
1.类型推测
在Java里很多的表达式中,根据语句的右边的代码完全可以推导出左边的类型,比如下面的Java语句:
//Java
List names = getTheListOfNames()
而在Xtend语言里,你就不必再声明左边的类型,直接写成:
val names = getTheListOfNames()
在for循环里可以写成这样:
for (name : getTheListOfNames())
2.对象属性访问方式的简化
在Java里,对象属性的访问一般都是借用set和get方法实现的,在Xtend里,你可以直接这样写:
person.name
而不需要写成:
person.getName()
赋值方法也是:
person.name = "Foo"
等同于
person.setName("Foo")
还有一个特征很像Ruby里的用法,对于一个方法的调用,你可以写成这样:
obj.compute
而不需要写成:
obj.compute()
3. Switch 语句
这条我不说,估计大家也都会明白。Java里的switch语句只能接受数字或char类型的判断参数,而在Xtend里,没有这种限制:
val Shape shape = ...
switch (shape) {
Rectangle case shape.width == shape.height :
"Square ("+shape.width+")"
Rectangle :
"Rectangle ("+shape.width+" x "+shape.height+")"
Circle :
"Circle ("+shape.diameter+")"
default :
"Don't know"
}
4.模板表达式
在Xtend里,定义一个字符串,你可以写成这样:
val msg = 'This is some multi line
text with "double quotes" in it'
请注意,这个字符串可以是多行的。
而在使用这个变量时, 你可以写成:
def print_line(String msg)'''
<>
'''
变量直接嵌入文本里!很像PHP或Ruby里的写法。
5.闭包
我最后介绍的当然也是最强大的一个功能了,闭包。据说Java会在xxxx(xxxx <=3000)年之前加入闭包功能,不过你不用等了。我们来看看Xtend里如何实现闭包:
val predicate = [ Person person | "Hans" == person.name ]
persons.filter(predicate)
这个闭包是用来实现过滤persons集合里person.name=”Hans”的功能的。怎么样,有点函数式编程语言的感觉吧。
Xtend里还有很多的语言特征,这里就不一一叙述了,有兴趣的朋友可以阅读官方网站提供的HTML在线文档,或下载PDF版的文档。
通过上面的介绍,你的Xtend的感觉如何?
附:下面是Xtend官网上提供的一个介绍视频:
分享这篇文章:
分享
看样子你已经点过这个了!
抱歉,你最多只能点三个!
怎么给java代码瘦身_Eclipse Xtend对Java说:我帮你瘦身相关推荐
- Java自己文章只能自己修改_文章目录Java代码俯身指南,主要为Java开发人员提供代码复审参考,快捷有效提出修改意见。目的发现代码错误:一个人写的代码可能会有一些思想和设计盲点,多个人尽...
文章目录 Java代码俯身指南,主要为Java开发人员提供代码复审参考,快捷有效提出修改意见. 目的发现代码错误:一个人写的代码可能会有一些思想和设计盲点,多个人尽早的发现BUG. 统一代码风格:统一 ...
- eclipse中java都乱码怎么办_eclipse中的java代码出现乱码怎么办
eclipse中的java代码出现乱码怎么办 发布时间:2020-06-29 18:11:20 来源:亿速云 阅读:109 作者:Leah eclipse中的java代码出现乱码怎么办?相信很多没有经 ...
- 双表查询java代码_什么是JDBC?Java数据库连接性简介
JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...
- java代码的执行机制_关于java代码的执行机制
转载于:https://blog.csdn.net/houfeng777123/article/details/74316748 1.Java代码执行流程 ·第一步:*.java-->*.cla ...
- java 代码 内存泄露_如何用Java编写一段代码引发内存泄露
Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有,好囧. A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中) ...
- java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...
- java代码防止sql注入_动态Java代码注入
java代码防止sql注入 在本文中,我们将研究如何将Java代码动态加载到正在运行的jvm中. 该代码可能是全新的,或者我们可能想更改程序中某些现有代码的功能. (在开始之前,您可能想知道为什么到底 ...
- java 代码块的作用_4种Java代码块的作用讲解
4种Java代码块的作用讲解 时间:2017-06-28 来源:华清远见JAVA学院 今天华清Java学院小编要和大家分享的是Java代码块的作用,代码块是一种常见的代码形式,他用大括号&qu ...
- 灰色模型 java代码_灰色模型的简单Java实现
前几天在以前的遗留代码中发现一个问题,就是我生成的一个数据的走势曲线的预测值(用于灰色时间序列预测)总是和老代码里的不一致,具体来说就是:遗留代码里面的预测值的斜率总是为零,相比之下我生成的就比较合理 ...
最新文章
- 链家前DBA判刑7年!你还敢不敢删库?
- Petya and Exam
- substr判断最后一个是不是逗号_用java帮助你判断一个数是不是回文数
- Spring Boot 静态资源映射与上传文件路由配置
- 判断手机浏览器还是桌面浏览器
- java setrotation_如何使用Java库将文档转换为横向模式?
- python工具书推荐_希望更加深入了解python 有什么书可以推荐?
- [BZOJ4540][HNOI2016]序列(莫队)
- 2021-06-26图层的概念
- N皇后问题(回溯算法解法)
- QT5入门学习(一)
- ansys--workbench(导入solidworks)受力分析
- TCP/IP报文详解
- 前端(html[5],css[3])学习总结+参考手册下载
- 计算机配置单性价比高,i5电脑主机配置单,性价比高
- 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统
- 润物细无声之千分之一
- 高德地图开发手册 php,地图控件-参考手册-地图 JS API | 高德地图API
- 信修修:安全省心!U盘安装纯净原版Win10系统教程!
- 黑马最新JavaWeb课程资料目录
热门文章
- 台式计算机机箱的作用,如何选购台式电脑机箱?小白装机选购电脑机箱知识指南...
- js 兼容事件添加addEvent()
- C语言循环结构中break,C语言-循环结构及break、continue
- 车库咖啡参与投资拍摄的电影《当我们海阔天空》即将上映
- Python爬虫 - 爬取肯德基门店信息
- Android File System安卓文件系统(安卓存储分区,/data /storage /sdcard)
- IBM推出用于量子计算的CLOPS性能标准;量子基本定理突破绝对零度的适用温度 | 全球量子科技与工业快讯第四十三期
- 基于PHP+MySQL的家居装修主题网站
- 美美征婚 阿米托佛(*^__^*)
- 吾爱2023新年红包题第六题 (CTF)