gpt4 book ai didi

java - 在 Java 中使用泛型时强制转换

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:56 25 4
gpt4 key购买 nike

我写了自己的Stack类(相关代码见下文)。在 next() 方法中,我被迫将 current.item 转换为 Item,但我不知道为什么。 current.item 的类型应该已经是 Item,因此不需要强制转换 - 但如果我不强制转换它,就会出现错误。

public class Stack<Item> implements Iterable<Item> {

private class Node {
Item item;
Node next;
}

private Node first= null;

public Iterator<Item> iterator() { return new StackIterator(); }

private class StackIterator<Item> implements Iterator<Item> {
private Node current = first;

public Item next(){
Item item = (Item)current.item;
current = current.next;
return item;
}
}
}

最佳答案

来自 StackIterator<Item> 的类型参数隐藏类型 Item , 这是在 Stack<Item> 的定义中引入的类(class)。

这就是您需要进行转换(或添加 @SuppressWarnings("hiding") 注释)的原因。

为了摆脱警告,只需删除重复的类型:

private class StackIterator implements Iterator<Item> {

}

关于java - 在 Java 中使用泛型时强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398502/

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