在java中创建一个可以接收不同类型的类

时间:2014-06-12 01:34:40

标签: java bubble-sort

我想实现这个类来接收不同类型的数组,比如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。

1 个答案:

答案 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。将它附加到变量名称也是有效的,但将它附加到类型更常规。