gpt4 book ai didi

java - 泛型类中私有(private)迭代器出现奇怪的输入错误

转载 作者:行者123 更新时间:2023-11-30 07:53:39 24 4
gpt4 key购买 nike

我正在 Java 1.7 中实现一个链表,但我不理解这种行为。代码中重要的部分是这样的:

public class LListSent<T> implements Iterable<T>{
//...
public T get(int pos) {
//...
}
//...
private class LListSentIterator {
private final LListSent list;
private int currPos;
private LListSentIterator(LListSent list) {
this.list = list;
currPos = 0;
}
//...
@Override
public T next() {
return list.get(currPos++); //exception in this line
}
}
}

我得到的异常(exception)是:

incompatible Type: Object cannot be converted to T
where T is a type-variable:
T extends Object declared in class LListSent

eve 虽然 left.get 返回一个 T 对象。为什么会出现这种情况?

最佳答案

您的list变量的类型为LListSent这是原始类型(因此未参数化),因此在此实例上调用的 get 方法将返回 Object而不是T .

将变量的类型更改为 LListSent<T> .

请注意,这将起作用,因为 LListSentIterator是一个内部类,可以访问类型变量 T .

更干净的解决方案是将您的 LListSentIterator 参数化。具有类型参数的类 S所以你的 list变量将变为类型:LListSent<S>

关于java - 泛型类中私有(private)迭代器出现奇怪的输入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987075/

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