神奇好望角 The Magical Cape of Good Hope

庸人不必自扰,智者何需千虑?
posts - 26, comments - 50, trackbacks - 0, articles - 11
  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理

JDK 源代码中的搞笑之处

Posted on 2007-11-30 17:47 蜀山兆孨龘 阅读(1082) 评论(0)  编辑  收藏
JDK 源代码中的搞笑之处 Funny Things in JDK Source
  虽然完整版的 JDK 源代码现已开放了,但安装在 Java\jdk[版本号] 目录下的公共 src.zip 仍然是我最经常参考的资源。每次我遇到一个 API 问题,都会刊这个公共源代码。解决问题之余,我还找到很多有趣的东西,有时还搞笑。这里距三个例子。     Though the full version of JDK source is available now, but the public src.zip installed under Java\jdk[version_number] directory is still my most frequent refered resource. Every time I encounter an API problem, this public source is read. And besides solving those problems, I've also found many interesting things which are sometimes also funny. Here are three exaples.
  大概从 JDK 5.0 开始,类 java.lang.Object 引入了一个叫 wait(long timeout, int nanos) 的方法。等等,nanos,纳秒?众所周知,即使在强大的 Windows 多媒体 API 里面,计时器的精度也只有一毫秒,也就是一兆纳秒。尽管 Java 非常棒,但不能处理纳秒。而源代码证明了这一点,纳秒被舍入到最接近的毫秒,0 或 1……精彩……     Maybe since JDK 5.0, a method called wait(long timeout, int nanos)is introduced into Class java.lang.Object.Object. Wait a minute, nanos, is it nanoseconds? It's no secret thst even in powerful Windows multimedia API, the precision of timer is only one millisecond, that is a million nanosecond. Though Java is pretty great, it can not deal with nanoseconds. And the source proves it, that nanoseconds are rounded to the nearest millisecond, 0 or 1... Amazing...
  今天我想得到一个 JDialog 的所有者,但却没有 getOwner() 方法。最后我才明白 JDialog 的所有者就是它的父组件,用 getParent() 就可以了。那现在所有者等同于父级了?     Today I wanted to get a JDialog's owner, but there's no method called getOwner(). Finally I was awear that the owner of a JDialog is exactly its parent component, and just using getParent() is okey. So owner is synonymous with parent now?
  最后,我想提下 JSpinner 的实现有错。一些安装在 JSpinner 上的侦听器丝毫不起作用。我在 JSpinner.java 里找到这段注释:“还是不对,我们没其他办法了,SpinnerModelJFormattedTextField 现已不同步了。”JDK 的开发者的诚实值得感谢。我的解决方法是直接操控复合式组件 JSpinner 中的 JFormattedTextField     At last, I wanna mention the JSpinner implementation is bugged. Some kinds of listener installed on a JSpinner take no effect at all. I found this comment in JSpinner.java: "Still bogus, nothing else we can do, the SpinnerModel and JFormattedTextField are now out of sync." The JDK developers deserve a thank for honesty. My solution is to directly manipulate the JFormattedTextField within JSpinner, a compound JComponent.

只有注册用户登录后才能发表评论。


网站导航: