我刚刚注意到 java.util.Observable 是一个具体的类。由于 Observable 的目的是扩展,这对我来说似乎很奇怪。这样做有什么原因吗?
I found 本文上面说
observable 是一个具体的类,因此必须预先确定从它派生的类,因为 Java 只允许单一继承。
但这并不能真正向我解释。事实上,如果 Observable 是抽象的,用户将被迫确定从它派生的类。
很简单,这是一个mistake that 可观察的是一个类at all、抽象或其他。
Observable
应该是一个界面并且 JDK 应该提供了一个方便的实现(很像List
是一个接口并且ArrayList
是一个实现)
java中有不少“错误”,包括:
-
java.util.Stack是一个类,而不是一个接口(像 Observable,不好的选择)
-
java.util.Properties extends java.util.Hashtable(而不是uses one)
- The java.util.Date类有点乱,而且是not 不可变的!
- The java.util.日历类是一个real mess
- 没有无符号的“字节”类型(这是一个真正的痛苦,也是许多低级错误的根源)
-
java.sql.SQLException is a checked例外
- 数组不使用
Arrays.toString(array)
作为他们的默认值toString()
(这引起了多少SO问题?)
-
Cloneable不应该是一个标记界面;它应该有
clone()
方法和Object.clone() should not exist
当在soapbox,就语言本身而言,恕我直言:
-
==
应该执行.equals()
方法(这会引起很多头痛)
- 身份比较
==
应该是===
像 javascript 或像这样的专用方法boolean isIdentical(Object o)
,因为你几乎不需要它!
-
<
应该执行compareTo(Object o) < 0
for Comparable
对象(同样对于>
, <=
, >=
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)