次のコードからわかるように、私たちは非静的クラスRemoveDups_1内静的クラスのLinkedListのインスタンスを取得するためにRemoveDups_1.LinkedList linkedList = new RemoveDups_1.LinkedList();
を書きます。これは静的クラスなので、クラスLinkedList
のインスタンスを取得するために新しいキーワードを使用する必要があるのはなぜですか?static以外の外部クラス内の静的内部クラスの参照を取得するには、なぜ 'new'キーワードを使用できますか?
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);
}
}
ちょうどあなたが静的な内部クラス(あるいは任意のクラス)の新しいインスタンスのnew' 'する必要はありませんと思わせるのだろうか? –
Javaの「静的な内部クラス」という定義はありません。 –