gpt4 book ai didi

java - 当我已经实现了这个方法时,为什么 Java 说 "cannot resolve method getPriority()"?

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

我创建了一个包含 QueueItem 的优先级队列对象。但即使我已经实现了 getPriority()QueueItem类,它仍然说 cannot resolve method getPriority()在方法中 insert()PriorityQueue类。

这是我的 PriorityQueue类:

public class PriorityQueue<QueueItem> implements Iterator<QueueItem> {
private int maxSize;
private int size;
private Map<Integer, List<QueueItem>> pq;

public PriorityQueue(int maxSize) {
if (maxSize < 0) throw new IllegalArgumentException();
this.maxSize = maxSize;
pq = new HashMap<Integer, List<QueueItem>>();
}

public boolean isEmpty() {
return size == 0;
}

public int size() {
return size;
}

public void insert (QueueItem item) {
int priority = item.getPriority(); //here is where the problem occured
// pq.get(priority)
}
}

这是我的 QueueItem类:

public class QueueItem implements Comparable{
private int priority;
private Object value;

public QueueItem() {
priority = -1;
value = null;
}

public QueueItem(int priority, Object value) {
this.priority = priority;
this.value = value;
}

public int getPriority() {
return priority;
}

public Object getValue() {
return value;
}

public int compareTo(Object o) {
if (!(o instanceof QueueItem)) throw new ClassCastException();
if (((QueueItem)o).getPriority() == -1) throw new NullPointerException();
return priority - ((QueueItem) o).getPriority();
}
}

如您所见,方法getPriority()简单地返回一个整数优先级。

如果有人能指出我所犯的错误,我将不胜感激。谢谢。

最佳答案

哦。它正盯着我的脸。

public class PriorityQueue<QueueItem> implements Iterator<QueueItem> {
// ^^^^^^^^^^^

您在这里声明了一个与类同名的类型变量 QueueItem它遮蔽了它。

所以我认为您只想删除它:

public class PriorityQueue implements Iterator<QueueItem> {

如果您打算 PriorityQueue通用然后我不确定你需要做什么来修复它。也许你会想要这样的东西:

public class PriorityQueue<E> implements Iterator<QueueItem<E>> {
...
private Map<Integer, List<QueueItem<E>>> pq;
...
}

public class QueueItem<E> implements Comparable<QueueItem<E>> {
...
private E value;
...
}

作为旁注,使用原始类型 Comparable isn't good .即使使用非通用 class QueueItem你应该有 implements Comparable<QueueItem> .

关于java - 当我已经实现了这个方法时,为什么 Java 说 "cannot resolve method getPriority()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587250/

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