java - java中原始类型的泛型方法

标签 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 方法对于所有原始数组都是相同的。有没有办法避免这种冗余?

最佳答案

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

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

关于java - java中原始类型的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957008/

相关文章:

java - 如何在 Java 中创建一个泛型数组?

java - 在 vaadin 中自动完成?

c# - 类型推断和继承

java - 如何通过 JNI 的函数调用接收 double 组?

java - 你能实现一个方法来充当 +... 但针对对象而不是基元吗?

java - 如何使用 JMS 将消息发送到 Websphere MQ,并对 MQ MGR 进行特定回复

java - Spring Security SwitchUserFilter exitUserUrl 被忽略?

c# - 具有通用类型和继承的复杂模型

c# - 带有泛型的可为空引用的注释

c# - 如何修复: Object must be an array of primitives. 参数名称:src