【发布时间】:2016-11-02 16:16:13
【问题描述】:
我很难看出何时使用泛型与何时使用 Object 之间的区别。现在我正在实现快速排序,并且已经看到使用
Generics - public static <T extends Comparable<T>> void qsort(T[] arr, int a, int b)
Objects - public static void quicksort(Object[] a, int left, int right)
Comparable - <T extends Comparable<T>> void sort(T[] a)
究竟有什么区别以及何时使用它们?我的目标是让最多的数据类型可以访问该类。
【问题讨论】:
-
这是一个练习吗?如果没有,为什么不使用内置的排序方法?
-
你确定你在你的第三种情况下引用了正确的签名(“可比”)?它与您的“泛型”签名几乎相同,而链接指向使用原始
Comparable的源。 -
就数组参数而言,“Generics”和“Comparable”方法之间没有任何区别。 “对象”方法只是一种糟糕的方法,可能在运行时失败,例如如果你传递一个数组
new Object[] { new Object(), new Object() }。因此,就何时使用选项而言:使用 1 或 3;不要使用 2. -
@AyoubFalah 甚至不考虑类型
Comparable