我了解到static class
是class
,其成员必须可以在没有class
实例的情况下访问。
来自java.util.HashMap
,jdk 1.8
,
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {
.........
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
Node(int hash, K key, V value, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
........
}
..........
}
调用构造函数的java语法是什么
Node(int hash, K key, V value, Node<K,V> next){...}
的嵌套static class Node
?
答案 0 :(得分:2)
我了解到静态类是一个必须访问其成员的类 没有类的实例。
更准确地说,静态嵌套类是实例 实例化的类,而不引用封闭类的实例。< / p>
静态嵌套类被视为封闭类的成员(及其方法和字段)。但是,在每一个重要的方面,静态嵌套类的功能就像顶级类一样。
要创建静态嵌套类的实例,请使用以下语法:
EnclosingClass.MemberClass myInstance = new EnclosingClass.MemberClass();
答案 1 :(得分:2)
我认为你不能&#34;看到&#34;那静态的内在阶级;它是受包保护的,你通常不会看到有人试图将他们的东西插入任何java。*包中。
这编译,但是yuk。我甚至不知道你可以用这种方式劫持java。*包。
package java.util
import java.util.HashMap;
import java.util.Map;
public class InstantiateNode {
public static void main(String[] args) {
HashMap.Node<String,String> mapNode = new HashMap.Node<String, String>(1, "hey", "you", null);
}
}
答案 2 :(得分:1)
没有,没有sintax。
Node具有包访问权限。这意味着您无法从HashMap所属的包之外的代码访问。
在不太可能的情况下,你在该包中编写代码,sintax将是:
HashMap.Node<KeyType, ValueType> node =
new HashMap.Node<>(hash, key, value, nextNode );