鲜为人知的但很有用的 Java 类
作者:Dustin Marx 发表日期:Fri, 03/02/2012 - 23:10.
Reddit Java 网站最近有一个题目为 “分享 Java 标准类库中一些有用的类” 的讨论话题,注解栏为 “有很多平常我们没有认识到的类,分享一些你经常使用而我们可能没有意识到的类吧!”。在这篇文章中,我看到下面回复超过 40 的一些类(大部分是 JDK 中的)。
有一些回复者分享的是与并发相关的 Java 类,如 Executors, java.util.concurrent.CountDownLatch, java.util.concurrent.atomic.AtomicInteger, ThreadLocal, java.util.concurrent 以及包下的所有类以及 java.util.concurrent.atomic.
还有一些与 String 处理相关的类也被提到了,包括 StringBuffer, 和 StringBuilder. 我在博文 String, StringBuffer, and StringBuilder: There Is A Performance Difference 中也提到了这些与 String 相关的类。其他与 String 相关并被提到的包括 java.util.StringTokenizer 和 Apache Commons‘ StringUtils (在我的文章 Checking for Null or Empty or White Space Only String in Java 中也有提到). java.util.Scanner 类也可以让简化文本解析。
在用户界面上, java.awt.geom 包, java.awt.Desktop 以及 javax.swing.SwingUtilities 被提到。 java.awt.Point 被高亮显示,原因总结为:” 任何两个 int 值对可以很简单的被用来代替数组传递给函数,或者从函数中返回,都可以使用 Point 类”。java.awt.Robot 类也在文中被提到,我之前也在我的一篇文章 Screen Snapshots with Java’s Robot 中提到。
不出所料,一些 Java 集合类也在列在其中。包括 java.util.EnumSet 和 EnumMap (参考我的文章 The Sleek EnumMap and EnumSet), java.util.ArrayDeque (参考我的文章 The Java SE 6 Deque), java.util.PriorityQueue,java.util.Arrays, 以及 java.util.Collections (参考我的文章 The Java Collections Class).
以我之见,java.lang.ClassLoader, java.util.ServiceLoader 和 java.nio.file.FileVisitor 是 Reddit Java 话题中提到的更精心构思和特别的类。我们大部分的情况下都是用强引用(strong reference),但 java.lang.ref.WeakReference (弱引用)和 java.lang.ref.SoftReference (软引用)也在讨论中被提到。
最后,我经常使用的一个类和一个方法分别是 BigDecimal 类(我的一边文章中顺便提到了该类: Caution: Double to BigDecimal in Java )和 System.nanoTime() 。
结论:
我喜欢列表中的很多类,也能想到一些其他的例子。特别的,我想 JDK7 中的 Objects 类也能称得上很有用但鲜为人知的一个类把。我同样同意其中一个评论的说法:“把 Google guava 库添加进来吧!”,我也写过一些博文关于 Guava 。