[JAVA]Generic

정연진·2021년 4월 26일
0

자바에서는 내가 직접 extends하지 않아도 object를 부모로 갖는다.
object는 자바의 최상위클래스이기 때문이다.

object로 인해서 뭐든 일괄처리할 수 있다.
예를 들어 1)

Object[] list = new Object[10];

list[0] = 3;
list[1] = "hello";
list[3] = 35.7;
list[4] = new Hello();

1)에서 의아한 점은 3은 참조형식이 아닌데 참조를 하고 있다는 점이다.

Object obj = 3;

위 코드는 boxing이 필요하다.

Object obj = new Integer(3);

처럼 말이다. 이는 컴파일러가 자동으로 해주며 auto boxing이라 한다. 이처럼 boxing해줄 경우 Integer를 wrapper 클래스라한다.

즉, 자바의 기본형식은 모두 wrapper클래스가 될 수 있다.

이렇게 boxing으로인해 문제가 해결 됐으니 object를 사용하여 일괄처리를 마음껏 할 수 있게 되었다.

하지만 1)처럼 object로 모든 형식을 섞어서 담기 보다는 한종류로만 담는 것이 더 효율적일 것이다.

2)

List list = new ArrayList();

list.add(10);
list.add("string");
list.add(2.5);

2)에서 컬렉션 list는 object형으로, 모든 형식의 데이터가 들어갈 수 있다. 이는 여러 문제가 발생하고 비효율적이다.
문제를 해결하기 위해 나온 것이 Generic이다.

3)

List<Integer> list = new ArrayList<>();

list.add(10);
list.add(35);
list.add(25);

Generic으로 list에 들어갈 수 있는 데이터의 형식을 integer로 한정하였다.
이제는 컬렉션에 한 종류의 데이터만 넣을 수 있게 되었다.

profile
열공해욧

0개의 댓글