gpt4 book ai didi

java - 对于通用外部类,为什么我需要将嵌套类声明为静态的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:06 25 4
gpt4 key购买 nike

我正在尝试使用链接为哈希表编写数据结构。当我从嵌套类中删除关键字“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/

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