2014-10-16 2 views
0

NullPointerException이 스레드 메인에 있는데, 특히 노드를 넣은 곳의 행과 어디에서 addEdge 메서드를 호출하는지 알 수 있습니다. 주요지도에 추가 할 수 없습니다

Graph test1 = new Graph(); 
Node n1 = new Node(1); 
Node n2 = new Node(2); 
test1.addEdges(n1, n2); 

addEdges 클래스에서

private TreeMap<Node, Set<Node>> nodeToNeighbours; 

public void addEdge(Node node1, Node node2) { 

    nodeToNeighbours.put(node2, new TreeSet<Node>()); 
    nodeToNeighbours.put(node1, new TreeSet<Node>()); 
} 
+0

으로 초기화하십시오. 'nodeToNeighbors'를 초기화해야합니다. – Andbdrew

+1

내 바보 같아요. 감사합니다 – user2077348

답변

1

당신은 단지지도를 선언하고있다은 여기를 초기화하는 없습니다 :

private TreeMap<Node, Set<Node>> nodeToNeighbours; 

그래서 nodeToNeighbours은 null이며 따라서 무언가를 추가하려고하면 NullPointerException이됩니다.

그냥이 같은 다음
nodeToNeighbours = new TreeMap<Node, Set<Node>>(); 

당신이 자바 7 이상을 사용하는 경우 : 여기에 언급 한 바와 같이이 작업을 초기화 할 수

nodeToNeighbours = new TreeMap<>(); 
0

당신은 그렇지 초기화 선언 한

private TreeMap<Node, Set<Node>> nodeToNeighbours; 

기본적으로 모든 참조는 null으로 초기화되므로 NullPointerException이 표시됩니다.

nodeToNeighbours = new TreeMap<Node, Set<Node>>(); 
+0

이것은 "기본적으로 모든 참조가 null로 초기화됩니다"잘못된 것입니다. 기본적으로 클래스 속성은 객체의 기본값으로 초기화됩니다. 객체의 경우 원시 속성은 null입니다. –

+0

여기서 클래스 속성은'nodeToNeighbours'이며'class-type'이기 때문에 기본값은'null'입니다. –