【发布时间】:2009-02-18 03:53:35
【问题描述】:
我经常认为允许将数组用作具有自己的方法的适当对象是一个好主意,而不是依赖像 Arrays、Arrays 和 ArrayUtils 这样的辅助类。
例如:
ints.sort(); // Arrays.sort(ints);
int[] onemore = ints.add(8); // int[] onemore = ArrayUtils.add(ints, 8);
我确信我不是第一个有这个想法的人,但我很难找到以前写过这个想法的其他人。谁能帮我提供一些关于这个主题的参考资料?
这是一个好主意还是坏主意,为什么?
实现起来有多容易?
其他一些示例可能包括(但不要挂断它们,它们与问题本身无关):
int[] ints = {5,4,3,2,1};
// Arrays.sort (ints);
ints.sort();
// int pos = Arrays.asList(ints).indexOf (5);
// int pos = ArraysUtils.indexOf (ints, 5);
int pos = ints.indexOf (5);
// Arrays.reverse (ints);
ints.reverse();
Array<Integer> array = ints; // cast to super class.
// int length = Array.getLength (array);
int length = array.getLength();
// Object n = Array.get (array, 3);
Object n = array.get (3);
// Array.set (array, 3, 7);
array.set (3, 7);
Object obj = array;
// if (obj instanceof int[])
// System.out.println(Array.toString((int[]) obj));
// else if (....)
System.out.println (obj);
【问题讨论】:
-
不确定你是否把米奇带到那里,比尔 :-) 这是对某人问题的转贴,因为我会写它,希望能教育他们。这就是我 wiki 的原因 - 我没有代表嫖娼。
-
我正在关注其他线程。我只是忍不住开玩笑。现在我仔细想想,这是一个不错的问题。
-
@Peter Lawrey,如果这个问题仍然存在(它可能不会,但我会忍受),让我知道你想要接受哪个答案,因为它是你最初的问题。否则我只会接受大约一周内得票最高的那个。
-
也有不一致的地方。虽然数组不是对象,但它们有一个 .lenght 属性,这对于原始类型来说是反直觉的。