java中基本类型的通用方法 [英] Generic methods for primitive types in java

查看:81
本文介绍了java中基本类型的通用方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是一个例子:

  import java.util.Collection; 

/ **
*由IDEA于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;

$ b $ <$ code>

尺寸方法都是相同的。有没有办法避免这种冗余?

解决方案

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



您可以在 java.util.Arrays class,其中每种原始数组都有不同的方法(例如:copyOf,sort,swap等)。

Here is an example:

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;
    }
}

The size method is the same for all primitive arrays. Is there a way to avoid this redundancy?

解决方案

No, there is not. That's the price of working with primitives.

You can see examples of this unavoidable redundancy in many methods in the java.util.Arrays class, where each kind of primitive array has a different method (examples : copyOf, sort, swap, etc...).

这篇关于java中基本类型的通用方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆