【问题标题】:The use of Generic parameter raises error使用通用参数会引发错误
【发布时间】:2021-10-17 08:26:37
【问题描述】:
public static<T> int getUsedSlotsSize(T[] arr) 
{
    int index = 0;
    while(arr[index] != null)
        index++;
    return index + 1;
}

int a = getUsedSlotsSize(arr);

eclipse告诉我把方法参数arr改成byte[]

我做错了什么?

【问题讨论】:

  • 我想你有一个byte[] 而不是Byte[]
  • 泛型类型不能表示原始类型,所以&lt;T&gt;不能表示byte,但它可以表示Byte,它是一个引用类型(这里是一个类)。
  • 原始类型不能是null。所以arr[index] != null 无论如何都不适用于byte

标签: java arrays generics


【解决方案1】:

您的代码未显示getUsedSlotsSize(arr) 中的arr 使用哪种类型。 如果你正在使用

byte[] arr = new byte(anySize);
int a = getUsedSlotsSize(arr);

那么您必须将数组的类型更改为 Byte[],如 cmets 中所述。

Byte[] arr = new Byte(anySize);
int a = getUsedSlotsSize(arr);

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 2020-09-26
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多