본문 바로가기
Back-End/Java

TIL 230601 : ArrayList와 함께한 오늘의 삽질들.

by 우인입니다 2023. 6. 1.

Product객체를 받는 ArrayList를 생성하고, add를 하려는데 빨간불이 뜬다.

add를 왜 해석할 수 없을까.

 

임의의 메소드 안으로 가져와보면 작동한다.

 

여러가지 시행착오를 시작해봤다.


두가지 빨간줄이 떴다.

1. 메소드 dd()에 '; is expected'

2. main메소드안으로 가져와보면 add는 읽는데 객체를 못 읽는다.

 

1. dd();

 : 저 영역은 main클래스안에 static main 메소드이다. 즉, 메소드 안에서 메소드를 정의하려해서 오류가 났다.

 다른 곳에 dd(){ } 형태로 메소드를 만들고, 만들어진 메소드를 dd();형태로 실행만 할 수 있다.

굳이 예시를 해보자면, 다른 클래스에 선언하고, main클래스에서 메소드로서 기능한다.

객체를 만들지 않고 우선 실행해보려고 static 메소드로 선언했다.

 

2. main메소드안으로 가져와보면 add는 읽는데 객체를 못 읽는다. (shackBurger를 찾지 못한다)

다른 클래스에서 생성해서 못 찾은 것. 굉장히 초보적인 실수..

Static으로 선언 후 클래스 도트연산자로 접근하니 가능했다.

 

  +굳이 다른 클래스말고 동일 클래스내에서 생성하면 바로 이용가능할까?

main 클래스안으로 끌고 왔는데, 다시 빨간줄.

왜냐면 위에서부터 코드가 실행되니까 윗줄에 생성을 먼저하고, 밑줄에서 등록해야한다.

 

 

ArrayList.add(); 메소드가 다른 메소드안에서 작동한다. 근데, Static객체를 생성하자마자 list에 추가하고 싶은데, 따로 메소드를 설정하는 것 말고는 방법이 없나?

 

그냥 메소드안에 처음 시작할때, 값 변화가 없는 상품을 바로 생성하는 static매서드를 만들어서 실행하자 마자 먼저 생성하게 했다. 약간 프로그램 처음 켤때 로딩하는 느낌인데, 이렇게 따로 빼놓는 게 이후 중복해서 객체를 생성하지 않도록 하기 위해 우선 이렇게 세팅했다.

 

아직 너무 기본적인 개념들이 부족하다..

더 공부해야할 것들
1. static. 생성자 등 메모리 점유 방식
2. 객체, 배열, 콜렉션 자유롭게 다루기.