Java 类型不匹配:无法从项转换为项 public类RandomizedQueue实现Iterable{ 私人物品【】s; 私人int N; 公共迭代器迭代器(){ 返回新的RQIterator(); } 私有类RQIterator实现迭代器{ 私人物品[]份; 私人物品; 公共注册会计师(){ 复制=(项[])新对象[N]; for(int i=0,k=0;i
在Java 类型不匹配:无法从项转换为项 public类RandomizedQueue实现Iterable{ 私人物品【】s; 私人int N; 公共迭代器迭代器(){ 返回新的RQIterator(); } 私有类RQIterator实现迭代器{ 私人物品[]份; 私人物品; 公共注册会计师(){ 复制=(项[])新对象[N]; for(int i=0,k=0;i,java,generics,compiler-errors,iterator,type-mismatch,Java,Generics,Compiler Errors,Iterator,Type Mismatch,在copy[k++]=s[i]行中,我得到了一个错误:类型不匹配:无法从一个项目转换到另一个项目,但我无法找出问题所在。有人能告诉我吗?谢谢 您的内部类RQIterator正在声明一个新的类型参数Item,它不同于其封闭类RandomizedQueue正在声明的类型参数Item 但是,RandomizedQueue中的Item类型参数仍在作用域内,因为RQIterator作为嵌套类,不是一个静态嵌套类。只需使用随机队列中的项 public class RandomizedQueue<Ite
copy[k++]=s[i]
行中,我得到了一个错误:类型不匹配:无法从一个项目转换到另一个项目,但我无法找出问题所在。有人能告诉我吗?谢谢 您的内部类RQIterator
正在声明一个新的类型参数Item
,它不同于其封闭类RandomizedQueue
正在声明的类型参数Item
但是,RandomizedQueue
中的Item
类型参数仍在作用域内,因为RQIterator
作为嵌套类,不是一个静态
嵌套类。只需使用随机队列
中的项
public class RandomizedQueue<Item> implements Iterable<Item> {
private Item[] s;
private int N;
public Iterator<Item> iterator() {
return new RQIterator<Item>();
}
private class RQIterator<Item> implements Iterator<Item> {
private Item[] copy;
private int newItems;
public RQIterator() {
copy = (Item[]) new Object[N];
for (int i = 0, k = 0; i < s.length; i++) {
if (s[i] != null)
copy[k++] = s[i];
}
newItems = N;
}
//hasNext(), next(), remove() methods..
}
}
哦,有道理。为什么静态嵌套类的行为会有所不同?类上声明的类型参数仅在类的非静态成员的范围内。请注意,可以将
项
声明为静态
嵌套类上的泛型类型参数,但是您将无法访问随机化队列
中的非静态
实例变量。
private class RQIterator implements Iterator<Item> {
public Iterator<Item> iterator() {
return new RQIterator();
}