gpt4 book ai didi

java - 编译java程序时出现错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:07 24 4
gpt4 key购买 nike

我有以下两门类(class)

import java.util.*;
public interface Stack<Item> extends Iterable<Item>{
void push(Item item);
Item pop();
boolean isEmpty();
int size();
Iterator<Item> iterator();
}

第二类是:

import java.util.*;
public class LinkedStack<Item> implements Stack<Item>{

private Node head;
private int size;


private class Node{
Item item;
Node next;

public Node(Item item){
this.item = item;

}

public Node(Item item, Node next){
this.item = item;
this.next = next;

}
}


public boolean isEmpty(){
return(head == null);
}

public int size(){
return size;
}

public void push(Item item){
head = new Node(item,head);
size++;
}

public Item pop(){
Item item = head.item;
head = head.next;
size--;
return item;
}

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

class LinkedStackIterator<Item> implements Iterator<Item>{
private Node current = head;

public boolean hasNext(){
return current != null;
}

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

public void remove(){};
}
}

我在方法 public Item next() 中遇到类型转换错误:

Item return_item = current.item;

如果我将上面的行写为

Item return_item = (Item) current.item;

效果很好。谁能告诉我原因吗?

我遇到以下编译错误:

LinkedStack.java:57: error: incompatible types Item return_item = current.item; ^ required: Item#2 found: Item#1 where Item#1,Item#2 are type-variables: Item#1 extends Object declared in class LinkedStack Item#2 extends Object declared in class LinkedStack.LinkedStackIterator 1 error

最佳答案

因为您的 LinkedStackIterator 类是通用的,所以当它引用 Item 时,它意味着与外部类中使用的 Item 不同的类型。一种解决方案是更改 LinkedStackIterator,使其不再通用,即更改:

class LinkedStackIterator<Item> implements Iterator<Item>{

class LinkedStackIterator implements Iterator<Item>{

旁注:Java 程序员看到通用类型变量被赋予有意义的名称(例如 Item)可能会感到非常困惑。您可能希望考虑将其重命名为更符合预期的名称,例如 T

关于java - 编译java程序时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403967/

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