为什么 java.util.Observable 不是抽象类?

2023-11-28

我刚刚注意到 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(使用前将#替换为@)

为什么 java.util.Observable 不是抽象类? 的相关文章

随机推荐

  • __defineGetter__ 的简洁替代品?

    Getter 和 Setter 是 VB Net 中的一个美妙之处 Get Return width End Get Set ByVal value As Integer width value End Set 在 Javascript 中
  • Android 在 vi​​deoview 中不显示 m3u8 格式,仅显示声音

    I didn t use a real device I was working on emulator Problem Solved 我正在开发一个实时流视频应用程序 我有很多带有 m3u8 后缀的直播 URL 当我启动应用程序时 我只能
  • PostgreSQL 错误:函数 AVG(字符变化)不存在

    我想计算 PostgreSQL 中某一列的平均数 SELECT AVG col name From TableName 它给了我这个错误 ERROR function avg character varying does not exist
  • 如何在 PHP7 中使用 Memcached?

    我试图找到有关在 PHP7 中使用 Memcached 的任何信息 但失败了 唯一有价值的信息很短Readme md of php memcached 存储库 不幸的是 其特拉维斯构建也失败了30 126 次测试在我的机器上 However
  • tel URI 中的加号是否应该编码?

    在 URI 中 空格可以编码为 既然是这种情况 那么在创建具有国际前缀的 tel URI 时是否应该对前导加号进行编码 哪个更好 两者在实践中都有效吗 a href Call me a a href Call me a No From 第3
  • 如何更改 Microsoft C# 编译器错误消息的语言?

    他们的俄语翻译无效且令人困惑 例如 在某些消息中 语言关键字已被翻译 所以我想查看原始版本 在 develop LINQPad ASP NET 错误等中 UPDATE这个很棒的网站可以通过翻译找到原始的英文错误消息 查找错误网 查看 c w
  • select() 函数的第一个参数到底是什么

    我不太明白第一个参数的目的select功能 维基百科将其描述为所有集合中的最大文件描述符加上 1 为什么 1以及为什么select需要这些信息吗 在 Nix 系统中 文件描述符只是系统表的索引 并且fd set结构包含与这些索引相对应的位掩
  • Javascript RegExp - 从字符串中提取电话号码

    我有以下有效的正则表达式来提取大量不同格式的电话号码 看这里 http jsfiddle net SB5Ly 4 var regex new RegExp d d d s d 2 g 如果脚本未加载 请按顶部菜单中的 运行 按钮 正如您在示
  • 服务工作者 - 首先网络然后缓存并回退到静态页面

    我想将 Service Worker 添加到我的网站 以便为我的网站用户提供良好的离线体验 网站后端是PHP 我对 Javascript Promise 和 Service Workers 还很陌生 但这是我到目前为止所达到的目标 my 索
  • 发送 HTML 电子邮件会导致电子邮件显示 HTML 源代码(Codeigniter 电子邮件类)

    我在通过 Codeigniter 中的电子邮件类发送电子邮件时遇到问题 在电子邮件中显示源 HTML 代码而不是呈现的 HTML 视图 为了进行测试 我目前在 Windows 上的 XAMPP 上使用 CI 并使用 Gmail SMTP 发
  • C++/Boost 将字符串拆分为多个字符

    一旦我看到一个示例 这可能真的很简单 但是如何概括 boost tokenizer 或 boost split 来处理由多个字符组成的分隔符 例如 用 这些标准分割解决方案似乎都不起作用 boost tokenizer
  • 通过 API 列出 Facebook 群组的成员

    是否可以使用 Facebook API 列出 Facebook 群组的成员 如果是 怎么办 这不再可能了 此边缘已于 2018 年 4 月 4 日弃用 无法再使用
  • ValueError:类的数量必须大于一(python)

    经过时x y in fit 我收到以下错误 回溯 最近一次调用最后一次 文件 C Classify classifier py 第 95 行 位于 train avg test avg cms train model X y ceps pl
  • 如何识别Python中哪个函数调用引发异常?

    我需要确定谁引发异常来处理更好的 str 错误 有办法吗 看看我的例子 try os mkdir valid created dir os listdir invalid path except OSError msg here i wan
  • 为什么曼彻斯特编码中比特率是波特率的一半?

    我认为波特率是符号的速率 如果每个符号包含n位 那么比特率应该是n x baud rate 在以太网 曼彻斯特编码 中 如果比特率是波特率的一半 那么一个符号包含1 2位 据我所知 比特率至少应该不小于符号率 波特率 关于波特率和比特率的关
  • 如何创建带有类别/细分的列表视图?

    我想在 android 中创建 listview 具有以下场景 标题类别 1 项目 1 第2项 第3项 标题类别 2 项目 1 第2项 标题类别 3 项目 1 等等 有人指导我如何实现这一目标吗 任何帮助 将不胜感激 答案的一部分就在那里
  • 在 Windows 上使用 pip 安装 zbar 失败

    我正在尝试安装zbar在我的 Windows x64 机器上 pip install zbar 这就是我得到的 Collecting zbar Using cached zbar 0 10 tar bz2 Installing collec
  • 如何使用坐标将标记移动 100 米

    我有2个坐标 坐标1是一个 人 坐标2是目的地 如何将坐标 1 移近 100 米以靠近坐标 2 这将在 cron 作业中使用 因此仅包含 php 和 mysql 例如 此人位于 51 26667 3 45417 目的地是 51 575001
  • 如何获取Vine视频地址

    I love vinepeek并想让事情变得更好 我有 Vine 链接 例如http vine co v bJqWrOHjMmU 但是这是页面链接 而不是视频 URL 我知道它是新的 但是 Vine 有 API 或者我怎样才能获取视频的 u
  • 为什么 java.util.Observable 不是抽象类?

    我刚刚注意到 java util Observable 是一个具体的类 由于 Observable 的目的是扩展 这对我来说似乎很奇怪 这样做有什么原因吗 I found 本文上面说 observable 是一个具体的类 因此必须预先确定从