为什么“数组”类在Java中都是静态的?
我正在浏览Java文档,我了解到Java类中的方法都是静态的。我真的不明白他们为什么让它变得静态的原因。Arrays
例如,下面的代码违反了OO方法,因为如果我有一个类型“X”,那么所有作用于它的方法都应该在其中:
int[] a = {34, 23, 12};
Arrays.sort(a);
如果他们通过以下方式实现会更好:
int[] a = {34, 23, 12};
a.sort();
谁能解释一下我吗?
我正在浏览Java文档,我了解到Java类中的方法都是静态的。我真的不明白他们为什么让它变得静态的原因。Arrays
例如,下面的代码违反了OO方法,因为如果我有一个类型“X”,那么所有作用于它的方法都应该在其中:
int[] a = {34, 23, 12};
Arrays.sort(a);
如果他们通过以下方式实现会更好:
int[] a = {34, 23, 12};
a.sort();
谁能解释一下我吗?
在Java中,没有办法扩展数组的功能。数组都继承自,但这很少。恕我直言,这是Java的缺陷。Object
相反,要为数组添加功能,会将静态实用工具方法添加到和 等类中。这些方法因为它们不是实例方法。Array
Arrays
static
良好的观察力。还要注意,并非每个数组都可以排序。只能对实现可比较
接口的基元数组和对象进行排序。因此,适用于所有数组的通用方法是不可能的。因此,对于每个实际可排序的受支持类型,我们都有几个重载的静态方法。sort()
@Holger在下面的评论中正确地指出,其中一个重载的静态方法确实是Arrays.sort(Object[]),
但文档明确指出:
数组中的所有元素都必须实现
可比较
接口。
因此,它不适用于未实现可比
对象或其子接口之一的对象。