티스토리 뷰

IT/WebB

Java Generics

리쫑v 2017.05.25 14:17
안드로이드 코딩하는중 자꾸 <>이딴 표현이 보여서 궁금해서 조사한 내용을 적어본다.


<> is called diamond operator since JAVA 7

Usage
-> List<Integer> list = new LikedList<>();

근데 generics라는말이 나온다. 그래서 그걸 찾아봤다

자바 ArrayList<T> 제너릭스(Generics)란?

제네릭스란 쉽게 말해서 ArrayList(컬랙션 클래스에서 사용가능하지만 쉬운 설명을 위해 대표적인 컬렉션 클래스인 ArrayList를 가지고 설명하겠습니다.) 가 다룰 객체를 미리 명시해줌으로써 형변환을 하지 않고 사용하는 것입니다.

음 컬랙션클래스가 뭐지. 일단 넘어가

즉 ArrayList가 사용할 객체의 타입이란 이야기입니다. 예를들어 우리가 현실에서 갤럭시S2블랙을 공동구매 한다고 하면 사람들이 100명 200명 300명 오로지 갤럭시 S2만 구입을 하려고 돈을 지불하는데요.

그럼 판매자 입장에서도 갤에스투블랙만 취급하기 때문에 구매한 사람들의 돈과 수량만 체크해서 물건을 보내주기만 하면 됩니다. 하지만 판매자가 여러가지 핸드폰을 팔 경우 사람들이 어떤 핸드폰을 주문했는지 매번 체크하고 돈과 수량을 또 다시 체크해야하는 번거로움을 겪을 수 있지요. 또한 주문한 물건이 다른 물건으로 바뀌어서 배송 될 수도 있습니다.

제네릭스를 사용하는 이유는 타입의 안정성을 제공하고(갤에스2블랙 공동구매시 주문한 물건이 바뀌는 일이 없음) 타입체크와 형변환을 생략(갤에스2블랙만 취급하기때문에 다른 핸드폰은 생각 안해도됨)할수있으므로 코드가 간결해집니다.

뭐야... 진짜?


<String>제네릭스는 스트링만 <Integer>제네릭스는 인티저 클래스만 사용할 수 있습니다. 스트링 제너릭스에 인티저를 넣으면 컴파일에러 발생한다.

그래 그렇겠지 예제를보자.

아....

예제를보니좀 이해가되네

그냥 ArrayList를 만들면
ArrayList myList = new ArrayList();

암거나 다 때려박을수있는데
ArrayList<String> myList2 = new ArrayList<String>();
이래 설정해두면
myList2에는 스트링만 넣을수있고
거기서 pop이나 get을할때 타입을 신경쓰지 않고 그냥 String이 리턴되는것을 garantee할수 있다는거군...

그래서 쓰는거구나..

그럼이제 Retrofit에서 Call클래스..를 호출할때<> 이게왜쓰이나 보자

'IT > WebB' 카테고리의 다른 글

Javascript Scope 자바스크립트 스코프란란란?  (0) 2017.07.07
Java Generics  (0) 2017.05.25
TCP의 이해  (0) 2016.03.25
UTIL_DEBUG.NWZ  (0) 2016.01.25
HeadFirstXHTML / CSS기초 노트  (0) 2016.01.06
MSSQL SP내용 쿼리로 보기  (0) 2015.12.16
댓글
댓글쓰기 폼