栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:Object类的基本原理未声明为抽象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:Object类的基本原理未声明为抽象

安德,我认为您正在以不必要的抽象程度接近此目标(双关不是故意的)。我认为这种(IMHO)不必要的抽象级别是造成此处“问题”的原因。也许您是从数学理论方法来解决这个问题的,而我们中的许多人都是从“试图解决问题的程序员”的方法解决这个问题的。我认为这种方法上的差异导致了分歧。

当程序员着眼于实用性以及如何实际 实现
某些东西时,有时会需要一些完全与实际实例无关的任意对象。它不能为空。我在另一篇文章的评论中给出的示例是

*Set
*
==
Hash
Concurrent
选择类型)的实现,通常是通过使用背景
*Map
并将
Map
键用作Set来实现的。您通常不能将其
null
用作
Map
值,因此通常要做的是使用静态
Object
实例作为值,该实例将被忽略并且从不使用。但是,需要一些非空的占位符。

另一个常见的用途是与

synchronized
其中的关键字 有些
Object
是需要同步,并且要确保你的同步产品完全私人避免死锁,不同的类无意中在同一个锁进行同步。一个非常常见的习惯用法是分配一个
privatefinal Object
在类中用作锁的语言。公平地讲,从Java
5和
java.util.concurrent.locks.Lock
相关的附加功能开始,该习惯用法明显不太适用。

从历史上看,

Object
可实例化在Java中非常有用。您可能会指出,只要对设计进行较小的更改或对API进行较小的更改,就不再需要这样做。您可能是正确的。

是的,API可能已经提供了一个

Placeholder
扩展类,
Object
根本不添加任何内容,就可以用作上述目的的占位符。但是-
如果您要扩展
Object
但什么也不添加,那么除了允许
Object
抽象之外,该类中的值是什么?从数学上讲,理论上也许可以找到一个价值,但在实用上,这样做会增加什么价值呢?

在编程中有时需要一个对象, 某个 对象, 任何
不为null的具体对象,可以通过

==
和/或进行比较的对象
.equals()
,但是您不需要此对象的任何其他功能。它仅作为唯一标识符存在,否则绝对不起作用。
Object
完美地(IMHO)完全满足此角色。

我想 就是为什么

Object
不声明为抽象的部分原因:不声明它是直接有用的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413968.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号