본문 바로가기

Generic4

[java] Generic을 이용한 Box Class 안녕하세요. 오늘 포스팅은 Java Generic의 4번째 시간입니다. 오늘 여러분들과 공유하고자 하는 내용은 다시 기본으로 돌아가서 Generic을 이용한 Box Class라는 내용입니다. Box Class에 란 아래와 같이 어떠한 타입으로든 받을 수 있는 Class를 말합니다. 아래 예제를 보면 Box class 안에 Object 타입의 변수가 하나있으며 getter, setter 메서드가 각각 있습니다. Object Class는 모든 Class의 부모 클래스이기 때문에 setter 메서든에는 모든 Class가 들어올 수 있게되어 Box Class란 이름으로 사용할 수 있는 것입니다. public class Box { private Object object; public void set(Object .. 2020. 11. 22.
[Java] Java의 Super Type Token 안녕하세요. 오늘은 Java Generic의 3번째 시간입니다. 외부 통신을 할 때 가장 많이 사용하는 Spring의 Bean은 restTemplate 일겁니다. restTemplate을 사용할 때 응답값에 대해서 형변환을 할 때 배열로의 형변환을 타입을 new TypeReference() {} 이렇게 사용하곤 합니다. jackson에서도 마찬가지지요. 왜 이렇게 사용할까요? 이상하게 여기고 List으로 바꾸면 제대로 동작하지 않습니다. 위와같은 형태를 Super Type Token이라고 부릅니다. 오늘은 이 Super Type Token은 어떤것이며 왜 사용해야하는지 알아보는 시간을 가져보겠습니다. 제네릭의 Type Erasure jackson이라는 라이브러리가 있습니다. jackson은 json형태의.. 2020. 11. 17.
[Java] Java 제네릭의 형 변환(covariant & contravariant) 안녕하세요. 저희는 저번 포스팅에서 배열과 컬렉션 제네릭의 차이점에 대해서 알아보는 시간을 가졌습니다. 그리고 배열은 기본적으로 형변환이 자유로우며 컬렉션 제네릭은 무공변으로 형변환이 불가능 하다는 차이를 알게 되었습니다. 그렇다면 컬렉션을 이용해서는 다양한 형태의 데이터 처리가 불가능 할까요? 그렇지 않습니다. 오늘은 제네릭의 형 변환(covariant & contravariant)에 대해서 알아보는 시간을 가져보겠습니다. 공변성(covariant) 공변성이란 자신이 상속받은 부모 객체로 타입을 변화시킬 수 있다라는 것을 뜻합니다. 제네릭의 공변성을 사용하기 위해서는 extends 키워드를 사용해야합니다. 아래 예제는 이전 포스팅에서 사용한 예제입니다. 아래 처럼 사용하면 컴파일에러가 발생하는 건 우리.. 2020. 11. 11.
[java] 배열(Array)과 컬렉션 제네릭의 차이 자바의 객체 타입은 고정이 아닙니다. 객체 타입은 런타임에 자신이 상속받고 있는 타입으로 변하는 업 캐스팅(upcasting)과 자신 자신의 아래 클래스의 형태로 변할 수 있는 다운 캐스팅(downcasting)이 있습니다. 이를 자바에서는 객체가 다형성(Polymorphism)을 가지고 있다고 합니다. 상속 매커니즘과 더불어 이런 다형성은 객체의 재사용성을 높여주고 객체지향(OOP)를 잘 달성할 수 있게 도와줍니다. 그리고 ArrayList, HashMap과 같은 Collections을 자바 개발자는 자주 사용하게됩니다. 이때 타입의 안정성을 위해 제네릭(generic)을 사용합니다. 이 제네릭은 다양한 Type을 지원할 수 있도록 타입 파라미터(type paramter) T를 지원합니다. 오늘 여러분.. 2020. 11. 8.