[TIL] 객체 배열 선언, 사용

김대욱·2023년 1월 25일
0
class SutdaDeck {
    final int CARD_NUM = 20;
    SutdaCard[] cards = new SutdaCard[CARD_NUM];

    SutdaDeck() {
    
    }
}

이 클래스의 생성자는 SutdaCard객체의 배열인 cards에 값을 초기화 시켜줘야 한다.


SutdaDeck() {
	for(int i = 0; i < CARD_NUM; i++) {
		cards[i].num = i + 1;
	}
}

그래서 이런식으로 값을 넣어줬더니 cards[i]의 값이 null이라 NullPointerException이 발생했다.
SutdaCard[] cards = new SutdaCard[CARD_NUM] 에서 SutdaCard를 인스턴스화 했다고 생각했는데, 알아보니 객체배열의 선언은 객체가 만들어진것이 아니라 객체를 담을 변수가 배열형태로 생성되는 것일 뿐, 객체가 생성되는 것은 아니였다. 그래서 사용하려면 cards 각각의 인덱스에 new SutdaCard()을 작성해서 초기화 시켜줘야 했다.


SutdaDeck() {
	for(int i = 0; i < CARD_NUM; i++) {
		cards[i] = new SutdaCard(i + 1);
	}
}

코드를 위와 같이 수정해서 해결했다.

0개의 댓글