BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JDK 7:java.util.Objects中应该包含哪些常用方法呢?

| 作者 Ryan Slobojan 关注 0 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2009年9月16日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

为了对即将到来的JDK 7新类java.util.Objects做准备,来自Sun的Joe Darcy向OpenJDK core-libs-dev团队咨询该类中应该包含哪些方法。借此机会,InfoQ向广大的Java社区征求意见。

在最初的提案中,Darcy谈到了该类中需要包含的几个方法:

  • 一个空安全(null-safe)的equals(arg1, arg2)方法,如果两个参数都为null返回true,如果只有一个为null返回false,其他情况则调用arg1.equals(arg2)
  • 一套针对所有原生类型(int、long等)的compareTo(arg1, arg2)方法

Andrew John Hughes也给出了自己的一些看法

  • toString(arg),通过反射将对象中的所有属性都写到返回的输出字符串中
  • 对clone()方法的一个辅助实现

Martin Buchholz还提出一个空安全的hashCode()实现,对于值为null的对象该方法返回0。

Stephen Colebourne专门为该类创建了一个长长的推荐方法列表,这些方法大多都是从Apache Commons Lang程序库中摘取出来的。比如:

  • min(comparable1, comparable2)与max(comparable1, comparable2),这两个方法都是空安全的方法,返回最小/最大的非空对象(如果两个参数都为null则返回null)
  • defaultNull(obj, defaultValue),如果obj为null则返回defaultValue对象

您有什么高见呢?java.util.Objects中应该包含哪些方法呢?

查看英文原文:JDK 7: What Frequently Rewritten Methods Should be Included in java.util.Objects?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

这样Objects类似乎要变成一个上帝类了啊 by Jeffrey Zhao

包含大量的职责。

其实例如像min/max这样的方法,都可以放在例如叫做Comparer的类中,其他方法也应该可以有合适的归属。

为什么要统一在Objects类上?

缺乏函数式编程的诟病 by 黄 海平

如果使用函数式编程类似的问题可以很优雅的解决!

Re: 缺乏函数式编程的诟病 by Storm Element

还不如直接把commons.lang都直接塞进去呢...

Re: 缺乏函数式编程的诟病 by Wang Deo

如果使用函数式编程类似的问题可以很优雅的解决!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

4 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT