gpt4 book ai didi

java - 扩展泛型类时遇到问题

转载 作者:行者123 更新时间:2023-11-29 08:26:25 27 4
gpt4 key购买 nike

我正在尝试创建一个名为“OrderedList”的泛型类,它使用泛型类型数组来存储使用类型预定义排序的特定类型。我在看似简单的操作上遇到了麻烦,我不明白为什么。这是我的代码。

    public OrderedList() {
list = (T[]) new Object[100];
size = 0;
}

public <T extends Comparable<T>> void add(T o) {
if (size == list.length) resize();
list[size] = o;

for (int i = 0; i < size; i++) {
o.compareTo((T) list[i]);
}
size++;
}

private void resize() {
int newSize = (int) (1.5 * (double) list.length);
T[] newArray = (T[]) new Object[newSize];
for (int i = 0; i < size; i++) {
newArray[i] = list[i];
}
list = newArray;
}

我遇到的错误是添加方法中的第二行“list[size] = o”。它向我提供了一个错误,显示“不兼容的类型。需要:T。找到:T。”另外,每当我实例化 <T extends Comparable<T>> 时,该错误消失了,但随后我无法比较我试图在通用数组中排序的两个对象。

谁能帮帮我?我真的很困惑。感谢您的帮助。

最佳答案

你需要把T extends Comparable<T>class 签名中,而不是 method 签名中。

class OrderedList<T extends Comparable<T>> {
T[] list;
int size;

public OrderedList() {
list = (T[]) new Object[100];
size = 0;
}

public void add(T o) {
if (size == list.length) resize();
list[size] = o;

for (int i = 0; i < size; i++) {
o.compareTo((T) list[i]);
}
size++;
}


private void resize() {
int newSize = (int) (1.5 * (double) list.length);
T[] newArray = (T[]) new Object[newSize];
for (int i = 0; i < size; i++) {
newArray[i] = list[i];
}
list = newArray;
}
}

关于java - 扩展泛型类时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52518150/

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