블로그 이미지
다엄
잘해야지

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

    'Programming/Java'에 해당되는 글 10

    1. 2010.07.08 Java NullPointerException 원인
    2010. 7. 8. 18:58 Programming/Java

    Java NullPointerException 에러가 발생하는 이유는 여러가지가 있겠지만 그 중 하나는 초기화를 제대로 해주지 않아서 발생하는 것이다.

    예를 들어 Node라는 클래스가 있고 , 이 클래스의 멤버 변수로는 Idx, nodeName이 있으며, 멤버함수로는 getter, setter가 있다고 가정하자.
    다른 클래스인 ConnDB 클래스에서 Node객체를 생성하고 이것의 초기화를 null로 해 줄 경우, 나중에 getter, setter를 사용하려고 할 때 NullPointerException 에러가 발생한다.
    클래스는 일종의 포인터로 생각하면 되는데 여기에 메모리를 할당하고 값을 넣어야 바르게 동작하는데, 클래스를 null로 초기화 하는 것은 메모리를 할당하지 않고 값을 쓰려고 한 것과 같기 때문에 에러가 발생한 것이다.

    위의 설명을 코드로 나타내면 다음과 같다.

    ===== 1. 잘못된 코드 =====
    // Node class
    public class Node{
         private int Idx;
         private String nodeName;
         
         getter, setter
    }

    // ConnDB
    public ConnDB{
         public void DBconnect() {
              Node srcN = null;
              srcN.setNodeName("seon");     <------- NullPointerException 에러 발생
         }
    }
        
    ===== 2. 바른 코드 ======
    // Node class
    public class Node{
         private int Idx;
         private String nodeName;
         
         getter, setter

         // 잘못된 코드에서처럼 초기값을 null 로 주고 싶을 경우, 생성자에서 각 멤버변수 값을 null로 추가.
         public Node(){
              this.Idx = 0;
              this.nodeName = null;
         }
    }

    // ConnDB
    public ConnDB{
         public void DBconnect() {
              Node srcN = new Node();       // srcN 객체에 메모리 할당.
              srcN.setNodeName("seon");    
         }
    }

    posted by 다엄