设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Java 下一代:第 2 部分

2013-5-21 10:54| 发布者: 红黑魂| 查看: 1731| 评论: 0|来自: developerWorks

摘要: Java 编程语言诞生时所面临的限制与如今的开发人员所面临的条件有所不同。具体来讲,由于上世纪 90 年代中期的硬件的性能和内存限制,Java 语言中存在原语类型。从那时起,Java 语言不断在演化,通过自动装箱(autob ...

清单 3. Scala 中的等效类

				
class Person(val name: String, var age: Int) {
  override def toString = name + " is " + age + " years old."
}

 

清单 3 中的 Person 类浓缩成了一个可变的 age 属性、一个不可变的 name 属性,以及一个包含两个参数的构造函数,还有我改写的 toString() 方法。很容易看到这个类的独特之处,因为有趣的部分没有埋藏在语法中。

Scala 的设计强调了以最少的语法创建代码的能力,它使许多语法成为可选语法。清单 4 中的简单类演示了一个将字符串更改为大写字母的 Verbose 类:


清单 4. Verbose 类

				
class UpperVerbose {
  def upper(strings: String*) : Seq[String] = {
    strings.map((s:String) => s.toUpperCase())
  }
}

 

清单 4 中的许多代码都是可选的。清单 5 给出了相同的代码,现在使用了一个 object 而不是class


清单 5. 一个转换为大写的更简单的对象

				
object Up {
  def upper(strings: String*) = strings.map(_.toUpperCase())
}

 

对于等效于 Java 静态方法的 Scala 代码,可创建一个 object(与独体实例等效的 Scala 内置实体)而不是一个类。方法的返回类型、用于将单行方法主体分开的括号,以及 清单 4 中无用的 s参数都从 清单 5 中消失了。Scala 中的这种 “可折叠语法” 有利有弊。使用可折叠语法,能够以非常符合语言习惯的方式编写代码,但这让不熟悉的人难以理解您的代码。

case 类

用作数据持有者的简单类在面向对象的系统中很常见,尤其是必须与不同系统通信的系统。这种类型的类的流行使得 Scala 项目向前推进了一步,创造了 case 类。case 类自动提供了多种便捷的语法:

  • 可根据该类的名称创建一个工厂方法。例如,可以在不使用 new 关键字的情况下构造一个新实例:val bob = Person("Bob", 42)
  • 该类的参数列表中的所有参数都自动 val,也就是说,它们是作为不可变的内部字段来维护的。
  • 编译器为您的类生成合理的默认 equals()hashCode() 和 toString() 方法。
  • 编译器将一个 copy() 方法添加到类中,以便您可返回某个副本来执行变体式更改。

Java 下一代语言不仅修复了语法瑕疵,还促进了对现代软件工作原理的更准确的理解,朝这个方向塑造它们的工具。

Groovy 的自动生成属性

在 Java 下一代语言中,Groovy 与 Java 语法最接近,为常见情形提供了称为 “语法糖 (syntactic-sugar)” 的代码生成方法。参见清单 6 中简单的 Groovy Person 类:



酷毙
2

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (2 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部