我试图制作以下静态方法,它给我一个错误

时间:2016-01-30 01:36:43

标签: java arrays dynamic-arrays

我正在尝试以下代码来制作一个调整数组大小的泛型方法,但它给了我一个错误“非静态类型变量T不能从静态上下文中引用”,有没有办法让这个方法静止不动没有错误?有没有其他更好的方法呢?我是java的新手,我还在学习,所以我不确定它是否会起作用,或者只是我认为它会为我做这个工作?

    public static T[] resizeArray(T[] t,int newSize) { 
        Object[] temp = new Object[newSize];
        System.arraycopy(t, 0, temp, 0, t.length);
        t=(T[]) new Object[newSize];
        System.arraycopy(temp, 0, t, 0, t.length);
        return t;
    }

2 个答案:

答案 0 :(得分:1)

在返回类型

之前放置类型定义
public static <T> T[] resizeArray(T[] t,int newSize)

答案 1 :(得分:0)

您可以在<T>后使用static将该方法设为通用,另请参阅Arrays.copyOf(T[], int)的签名。哪个复制指定的数组,截断或填充空值(如有必要),以便副本具有指定的长度。像,

public static <T> T[] resizeArray(T[] t, int newSize) {
    return Arrays.copyOf(t, newSize);
}