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에 안 에있는 값을 출력하면
오류 없이 출력이 가능하다.
'JAVA > JAVA 기초 문법' 카테고리의 다른 글
[java] 배열 ArrayList, hashMap 설명 (0) | 2024.06.04 |
---|---|
[java] 정수,실수 클래스로 생성하는법, 문자열 -> 숫자, 숫자 -> 문자열, 문자열 가공 방법 (0) | 2024.06.03 |
[java] 클래스 상속, Protected 엑세스,super, 메소드 오버라이딩 (0) | 2024.06.03 |
[Java] 기본문법, 생성자, 오버로딩, this, 접근제어자, getter/setter, 멤버변수,용어 (0) | 2024.05.31 |