java中基本类型的通用方法

时间:2014-11-16 12:41:37

标签: java generics primitive

以下是一个例子:

import java.util.Collection;

/**
 * Created by IDEA on 16/11/14.
 */
public class Size 
{
    public static int size(Iterable<?> data) 
    {
        if (data instanceof Collection) {
            return ((Collection<?>) data).size();
        }
        int counter = 0;
        for (Object i : data) {
            counter++;
        }
        return counter;
    }

    public static int size(int[] data) 
    {
        return data.length;
    }

    public static int size(double[] data) 
    {
        return data.length;
    }

    public static int size(float[] data) 
    {
        return data.length;
    }

    public static int size(short[] data) 
    {
        return data.length;
    }

    public static int size(boolean[] data) 
    {
        return data.length;
    }

    public static int size(char[] data) 
    {
        return data.length;
    }

    public static <T> int size(T[] data) 
    {
        return data.length;
    }
}

size方法对于所有基本数组都是相同的。有没有办法避免这种冗余?

1 个答案:

答案 0 :(得分:3)

不,没有。这是使用原语的代价。

你可以在java.util.Arrays类的许多方法中看到这种不可避免的冗余的例子,其中每种原始数组都有不同的方法(例如:copyOf,sort,swap等)。