我想实现这个类来接收不同类型的数组,比如String,int,double等:
public class BubbleSort<T extends Comparable<T>> {
private T [] A;
public BubbleSort(T [] A) {
this.A = A;
}
public void bubbleSort() {
for (int i = 0; i < this.A.length; i++) {
for (int j = 0; j < this.A.length - 1; j--) {
if (this.A[j].compareTo(this.A[j - 1]) < 0) {
T aux = this.A[j];
this.A[j] = this.A[j - 1];
this.A[j - 1] = aux;
}
}
}
}
但是当我像这样创建该类的对象时:
double A[] = { 3, 2, 4, 6, 7, 1, 2, 3 };
BubbleSort bs = new BubbleSort(A);
我收到一个错误,告诉我没有定义BubbleSort(double [])的构造函数。我认为我在泛型类中做错了,我需要一些帮助。
Cumps。
答案 0 :(得分:3)
您需要参数化BubbleSort
和使用引用类型的数组,而不是基本类型(因为泛型仅适用于引用类型):
Double[] A = { 3d, 2d, 4d, 6d, 7d, 1d, 2d, 3d }; // notice Double ref. type
BubbleSort<Double> bs = new BubbleSort<Double>(A); // notice <Double> type param.
另请注意,我已将[]
附加到数组的类型,即Double
。将它附加到变量名称也是有效的,但将它附加到类型更常规。