gpt4 book ai didi

java - 无法使用 Java 泛型将类型 int 转换为 E

转载 作者:行者123 更新时间:2023-11-29 04:46:10 25 4
gpt4 key购买 nike

在泛型出现之前,Java 一直做得很好。我很难将此队列转换为使用接受任何数据类型的泛型。

我不明白为什么 item 不能转换为 intitem 应该表示“任何”数据类型。

一个答案加上一些关于泛型的解释会很有用,因为我还需要创建一个删除函数。

private int initialCapacity = 10;
private int size = 0;
private int[] content;

public static <E> void add(E item) {
int size = 0;
int[] content;

// If we run out of space in the array
if (size == content.length) {

// 1) Create a new, larger array (2x)
int[] newArray = new int[content.length * 2];

// 2) Copy the content from the old array to the new one
for (int c = 0; c < content.length; c++) {
newArray[c] = content[c];
}

// 3) Let the old array point to the new array
content = newArray;
}

//Add the item to the content of the array list
content[size] = item;
size++;
}

最佳答案

让我们从头开始。 E是类型参数,所以我们首先要搞清楚它的作用域。通常,对于队列,类型参数适用于整个队列(而不仅仅是单个 add )操作,因为我们希望队列具有一致的类型。因此,首先将您的类声明为:

public class YourQueue<E> {
...
}

并删除 <E>来自 add 的方法声明, 制作 public void add(E item) .不确定为什么将其声明为静态,因为它应该添加到给定的队列中。

第三,如果您要使用数组来存储 YourQueue<E> 的元素,它不应该是整数数组,因为各种对象都不能转换为整数。它应该是一个声明为 E[] 的数组.

关于java - 无法使用 Java 泛型将类型 int 转换为 E,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37038862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com