java - 了解有关 Java Object 类的一些设计事实
问题描述
我学到了这一点,Object.clone()
并且Cloneable
做出了一些糟糕的设计决定。但是我还有一些疑问:
为什么
Object.clone()
有受保护的修饰符,而其他Object.toString()
的Object.equals()
却没有protected
?为什么要让来自不同包的非子类无法访问,而不是像andclone()
一样让它们公开?toString()
equals()
这个页面说:
对象克隆是一种受保护的方法,因此我们必须重写它才能与其他类一起使用。
我觉得上述事实是完全错误的,因为
protected
修饰符没有施加任何此类限制。我们仍然可以调用clone()
,但它会抛出运行时异常,而不是编译时异常。- Java中的每个类如何都是类的子
Object
类?最有可能的答案是“设计”。但我想知道这个事实在哪里执行?通常要扩展一个类,我们使用extends
关键字。但是我们不会让每个自定义类都这样做extends Object
。那么它发生在哪里呢?编译器是否通过强制执行此类限制来自动生成字节码?
解决方案
推荐阅读
- windows - 为什么无法出现控制窗口?
- php - 失败:代码:404 值:未找到详细信息(如果有):未找到段“作业”Microsoft Azure [Blob 创建] PHP SDK 的资源
- notion-api - Notion API - Update Relation Support
- swift - SpriteKit SKScene not resizing correctly to fit iPhone 12
- javascript - Sum previous date values to today Date
- javascript - submit dynamically created forms / React
- rust - Rust tuple assignment
- flutter - How to create a Text Field Form that has two parts like in this image?
- android-progressbar - seekbar/ progress bar: progress read with appium python client
- excel - 如何在 VBA 中对另一张表中的值求和?