作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用链接为哈希表编写数据结构。当我从嵌套类中删除关键字“static”时,出现错误“无法创建 SeparateChaining.Node 的通用数组”?在我使用 new 为 hmap 分配内存的那一行。
使用 static 关键字效果很好。有人可以在这里指出关键字 static 的重要性及其区别吗?我正在创建一个对象数组,为什么会在错误中显示通用数组(Eclipse)?
public class SeparateChaining<Key,Value> {
private int m;
private Node[] hmap;
private int n;
public SeparateChaining()
{
m=5;
n=0;
//error here on removal of static keyword from the node class declaration
hmap=new Node[m];
}
private ____ class Node //works fine with static. Otherwise shows error
{
private Object key;
private Object value;
private Node next;
public Node(Object k, Object v)
{
key=k;
value=v;
}
}
谢谢
最佳答案
如果声明内部 Node
分类为 static
,则该类与外部类相关联 SeparateChaining
. Node
那么实际上是SeparateChaining.Node
.
没有 static
, 它将与 SeparateChaining
的一个实例相关联,这将需要几个类型参数,因此内部 Node
类也需要那些类型参数。 Node
那么实际上是SeparateChaining<Key, Value>.Node
;在 Java 中,creating an array of generics不合法。
关于java - 对于通用外部类,为什么我需要将嵌套类声明为静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199919/
我是一名优秀的程序员,十分优秀!