12
返回列表 发新帖
楼主: Sky-Tiger

健壮的 Java 基准测试

[复制链接]
论坛徽章:
350
2006年度最佳版主
日期:2007-01-24 12:56:49NBA大富翁
日期:2008-04-21 22:57:29地主之星
日期:2008-11-17 19:37:352008年度最佳版主
日期:2009-03-26 09:33:53股神
日期:2009-04-01 10:05:56NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA季后赛大富翁
日期:2009-06-16 11:48:01ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05
11#
 楼主| 发表于 2013-6-13 20:45 | 只看该作者
Scala 中的类和 case 类
Scala 已简化了类定义,可为您自动创建存取函数、赋值函数和构造函数。例如,请查看清单 2 中的 Java 类:

清单 2. Java 中简单的 Person 类
                               
class Person {
    private String name;
    private int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " is " + age + " years old.";
    }
}  

清单 2 中惟一的非样板代码是改写的 toString() 方法。构造函数和所有方法都由 IDE 生成。相比快速生成代码,在以后轻松理解它更为重要。无用的语法增加了您在理解底层含义之前必须使用的代码量。
Scala Person 类
令人震惊的是,清单 3 中用 Scala 编写的简单 3 行定义就创建了一个等效的类:

清单 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 中的这种 “可折叠语法” 有利有弊。使用可折叠语法,能够以非常符合语言习惯的方式编写代码,但这让不熟悉的人难以理解您的代码。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表