instance 생성과 static 을 적용하지 않으면 nullException 이 발생한다

LOST& FOUND·2024년 4월 22일

도서회원을 관리하는 시스템을 개발중에 있다.

구현할 주요 기능

  1. 도서관 사용자의 도서현황
  • join : 완료

  • rent status : 만드는 중

  • userList manage : 완료

  • booklist manage : 완료

    기존의 예제에서는 회원을 1명만 입력해서 시험삼아 프로그램을 돌렸었다.
    나는 회원을 여러 명 추가하는 userlist 배열을 만들어서
    입력받은 회원이 users배열에 추가되고 조회할 수 있도록 구현하고 있다.

    마주친 문제

nullexception

그래서 아래와 같은 사항을 확인해야 했다.

  1. 입력한 값이 제대로 저장되는지 확인하기
  • 함수를 잘못 작성하여 제대로 연동이 안되어 있는건 아닌가 ?
    -> 로그를 찍어서 코드 돌려가며 확인
  • 데이터가 저장되는 코드가 (userlist) 제대로 작성되어 있는가?
    -> 로그를 찍어서 코드 돌려가며 확인
  • instance 가 제대로 생성되고 그 값에 저장되는가?
    문제가 생긴 부분 : 입력받은 데이터 배열에 저장하기 로그 찍어서 코드 돌리며 확인하기 귀찮지 않나요
    A : 디버깅 모드가 있었다...!!

//save inputted data      
    repository.saveBookUser(new BookUser(name, age, gender, 0));


    //field
    SimpleInput si;
     static LibraryRepository repository = new LibraryRepository();

공유할 수 있는 객체를 생성해야 한다.
나는 여기서 만들지 않고 새로 생성하는 객체에서의 new 를 참조할 수 있을 줄 알았다.

static LibraryRepository repository = new LibraryRepository(); 대신 LibraryRepository repository; 로 코드를 짜서 실행해도 입력받을때까지는 문제가 없다.
그런데 데이터를 관리해야하는 저장소 LibraryRepository repository;에서 데이터가 쌓이는 static instance를 만들지 않고, method에서 생성되는 instance에 의존하게 되면 위의 데이터 저장하는 코드를 작성해도 데이터가 쌓이지 않는다.

그래서 repository 가 null 로 뜨게 된다.

✨ 결론 🧐
데이터를 저장하고 참조하고 싶을 때는 static을 활용한 instance를 꼭 꼭 기억해서 만들어놓자.

profile
지금은 코부작

0개의 댓글