一种可以使用原始数据类型和泛型的方法吗?

时间:2015-03-26 14:44:00

标签: java generics generic-programming

我最近了解了泛型并重新编写了旧的二进制排序程序,该程序过去只对int类型的值进行排序
我的新实现将排序除原始数据类型之外的所有内容 以下是实施:

import java.util.Random;

class SortAllTypes
{
    static <All extends Comparable<All>> void sort(All array[])
    {
        for(int i = array.length - 1; i >= 0; i--)
            for(int j = 0; j < i; j++)
                if(array[j].compareTo(array[j+1]) > 0)
                {
                    All temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
    }

    static <All> void display(All array[])
    {
        for(All value : array)
            System.out.print(value + " ");
        System.out.println();
    }
    public static void main(String X[])
    {
        Random generator = new Random();
        Integer x[] = new Integer[10];
        String directory[] = {"def", "ghi", "abc"};
        for(int i = 0 ; i < x.length; i++)
            x[i] = generator.nextInt(100);
        sort(directory);
        display(directory);

        sort(x);
        display(x);
    }
}

我知道仿制药不能处理原始数据类型,我找不到编写单个函数的解决方案,可以对任何{的值进行排序{1}}。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

可以定义一个方法,它接受Object然后进行instanceof检查以确定提供了哪种类型的数组并操作特定类型的数组。我很确定这不是你想要的。

查看Arrays实用程序类。请注意,Object[]和每种基本类型都会重载每个操作(binarySearch,copyOf,sort等)。