ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 제네릭과 컬렉션(2)
    JAVA 2021. 4. 16. 01:15

    이번 포스팅도 뉴렉처님 강의를 정리한 내용입니다. 자세한 설명 및 내용은 본 강의를 참고해 주세요!

     

    www.youtube.com/watch?v=nHJtdNuKXx8&list=PLq8wAnVUcTFWKOIbvo18pJZ9zsxtXz_-k&index=3

     

     


    저번 시간에 아래와 같은 코드를 작성했습니다.

     

    위 코드의 문제점은 관리하고 싶은 형태(type)이 int형일 때에만 적용된다는 것입니다.

    즉 관리하고 싶은 대상이 문자열이나, 실수형 , 객체형일 때에는 수정을 통해 고쳐줘야 한다는 뜻입니다.

    이는 복잡하고 번거러운 작업이며 이를 보완하기 위해 한가지 개념이 필요합니다!

     

    바로 Object라는 녀석입니다. Object는 사용자가 따로 설정해 놓진 않지만 default값으로 들어있는 모든 클래스의 부모입니다.

     

    뉴렉처님 강의자료

    이와 같이 NewlecExam객체를 만들때, NewlecExam의 부모클래스인 Exam과 Object를 이용할 수 있다는 것입니다.

     

    하지만 위와 같은 방법도 한 가지 문제가 발생합니다.😫

     

    바로 참조형변수를 담을 수 있지만, 기본형 자료는 담지 못한다는 점입니다.

     원인 : 값은 참조되는 것이 아니라 담는 것이기 때문

     

    Boxing이라는 작업을 통해 자료형을 참조형으로 바꿔주도록 하겠습니다.

     

    Object obj = new Integer(3);

     

    뉴렉처님 강의 캡처본

     

    String은 참조형변수 이므로 나머지 기본형자료를 Integer를 통해 참조형으로 Boxing 작업을 통해 모든 자료 형태를 나타낼 수 있게 됩니다.

     

    여기서 Integer = 3; 와 Int = 3;의 차이가 여기서 밝혀지내요! 

     

     

     

    ObjectList 클래스를 생성하고, 

     Object형태의 배열을 만들어 줍니다

     

    ObjectList의 get메소드가 Object의 형태의 값을 나타내므로

    Program 클래스 라인 17번에서

    int num = list.get(0) 와 같이 작성을 하면 오류가 발생합니다.

    왼쪽의 num값은 int인데, 우변 list.get(0)의 형태는 Object이기 때문입니다

     따라서 형변환을 시켜줍시다

    댓글

Designed by Tistory.