JAVA/JAVA 기초 문법
[java] java.lang.NullPointerException 에러 heap 메모리 지정
코끼리똥11
2024. 6. 4. 11:57
Main.java
package main;
import Membercontroller.MemberController;
import medel.Member;
public class AddressMain {
public static void main(String[] args) {
MemberController mc = new MemberController();
Member member = new Member("홍길동","010");
mc.memberList.add(member);
}
}
member.java
package medel;
public class Member {
public String name;
public String Phone;
public Member(){
}
public Member(String name, String phone) {
this.name = name;
this.Phone = phone;
}
}
MemberController.java
package Membercontroller;
import java.util.ArrayList;
import medel.Member;
public class MemberController {
public ArrayList<Member> memberList;
}
이렇게 코드를 짯을때 실행하면
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.ArrayList.add(Object)" because "mc.memberList" is null
at main.AddressMain.main(AddressMain.java:21)
엔드포인트 에러가 뜬다.
이 코드에서 에러가 뜬 이유는 MemberController 에서 public ArrayList<Member> memberList; 부분에 객체가 생성이 되지 않았기 때문에
main 함수에서 mc.memberList.add(member); 코드에서 mc 변수에 memberList 라는 객체를 불러올 수 없기 때문이다.
따라서 memberList의 객체를 생성해줘야한다.
MemberController.java
package Membercontroller;
import java.util.ArrayList;
import medel.Member;
public class MemberController {
public ArrayList<Member> memberList = new ArrayList<>();
//HashMap<String,ArrayList<Member>> addressMap;
}
memberList를 ArratList 데이터 타입 를 사용하여 Member 객체들을 저장하는 리스트를 만든다. 즉,new 키워드를 사용하여 heap 메모리에 객체를 생성해줘야한다,
Member 클래스의 데이터 타입을 가진 m 이라는 변수명을 지정하고 memberList에 안 에있는 값을 출력하면
오류 없이 출력이 가능하다.