在研究标准 Java 库及其类时,我不禁注意到其中一些类的方法在我看来与这些类的原因几乎无关。
例如,我正在谈论的方法是Integer#getInteger,它检索某个“系统属性”的值,或者System#arraycopy,其目的由其名称明确定义。尽管如此,这两种方法似乎都有些格格不入,尤其是第一种,它出于某种原因将使用系统资源绑定到原始类型包装类。
从我目前的观点来看,这种方法放置策略似乎违反了基本的 OOP 设计原则:每个类都必须致力于解决其特定的问题集,而不是把自己变成瑞士军刀。但是因为我不认为 Java 设计者是白痴,所以我认为将这些方法放置在它们所在的位置的决定背后有一些逻辑。所以如果有人能解释这个逻辑到底是什么,我将不胜感激。
谢谢!
更新
一些人暗示,Java 确实有一些不合逻辑的东西,它们只是动荡过去的残余。然后我重新提出我的问题:为什么 Java 如此不愿意将其架构缺陷标记为已弃用,因为现有的已弃用功能在任何可观察到的未来都不太可能停止使用,而弃用某些东西确实有助于避免在新的应用中使用它们创建代码?