为什么我们可以使用' new'用于获取非静态外部类中的静态内部类的引用的关键字?

时间:2017-04-06 08:25:30

标签: java class static linked-list instance

从下面的代码中可以看出,我们编写RemoveDups_1.LinkedList linkedList = new RemoveDups_1.LinkedList();来获取非静态类RemoveDups_1中的静态类LinkedList的实例。由于这是一个静态类,为什么我们需要使用new关键字来获取类LinkedList的实例?

import java.util.*;

public class RemoveDups_1{
    public static class LinkedList{

        static int i = 5;

        class Node{
            int data;
            Node next;

            public Node(int data){
                this.data = data;
            }
        }

        Node head;

        public void appendToTail(int data){
            if(head == null){
                head = new Node(data);
            }
            else{
                Node node_to_append = new Node(data);
                Node node = head;
                while(node.next != null){
                    node = node.next;
                }
                node.next = node_to_append;
            }
        }
    }



    public static void main(String[] args){

        RemoveDups_1 removeDups_1 = new RemoveDups_1();
        RemoveDups_1.LinkedList linkedList = new RemoveDups_1.LinkedList();     
        RemoveDups_1.LinkedList.Node node;
        node = linkedList.new Node(3);

        System.out.println(RemoveDups_1.LinkedList.i);

    }
}

2 个答案:

答案 0 :(得分:1)

LinkedList是嵌套类,你需要它是静态的,以便实例化它而不需要创建它的外部类的实例

答案 1 :(得分:0)

"为什么我们需要使用new关键字来获取类LinkedList的实例?"

因为这是为类的实例分配内存的方式,无论它是顶级还是嵌套类,静态或内部。静态嵌套类成员和内部类成员之间的区别在于前者不与外部类的实例相关联,后者是。