为什么 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 不是抽象类? 的相关文章

  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • 不支持的字段:将瞬间格式化为日期 ISO 时的年份[重复]

    这个问题在这里已经有答案了 我正在尝试将 Instant 格式化为 ldap 日期 ISO8601 但在 f format Instant now 处失败 String input 20161012235959 0Z DateTimeFor
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 如何在ArrayList中的特定位置插入对象

    假设我有一个大小为 n 的对象的 ArrayList 现在我想在特定位置插入另一个对象 假设在索引位置 k 大于 0 且小于 n 并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置 那么有没有什么方法可以直接在Java中做到这
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • java项目中无法加载类“org.slf4j.impl.StaticLoggerBinder”错误? [复制]

    这个问题在这里已经有答案了 我越来越Failed to load class org slf4j impl StaticLoggerBinder 错误 我想将记录器写入文件 所以我使用了 log4j jar 并使用 apache tomca
  • FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

    我有一个应用程序可以观察外部存储上的公共目录FileObserver 它运行良好Lollipop设备 我想添加对Marshmallow 所以我用它设置了一台 Nexus 9 平板电脑 在 Marshmallow 设备上 它失败 在 Loll
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • 是否可以手动检查 LocateRegistry 是否存在?

    I 已经发现 https stackoverflow com a 8338852 897090一种安全的方式获得LocateRegistry 即使注册表尚不存在 Registry registry null try registry Loc
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for
  • 错误膨胀类 android.support.design.widget.NavigationView [启动时崩溃]

    该应用程序应该有一个导航抽屉 可以从左侧拉出并显示各种活动 但是一旦将导航栏添加到 XML Activity homescreen 文档中 应用程序一启动就会崩溃 主屏幕 java package com t99sdevelopment c
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • 在java中执行匿名pl/sql块并获取结果集

    我想执行匿名 PL SQL 并需要获取结果集对象 我得到了可以通过在 PL SQL 块内使用游标来完成的代码 但 PL SQL 块本身将以文本形式来自数据库 所以我无法编辑该 PL SQL 块 并且它只会返回两个值 其列名始终相同 它将返回
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该

随机推荐

  • __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 是一个具体的类 因此必须预先确定从