기본적으로 kotlin의 generics 는 자바와 많은 부분에서 비슷하다. 하지만 몇가지 달라진점, 추가된점들이 있는데 그 것들을 정리한다. 기본적으로 자바의 generics 을 어느정도 이해하고있다는 가정하에 얘기가 진행되므로 generics 전체를 자세히 설명하지는 않는다. 1. Star Projection * 를 이용해서 표현한다. 특정 타입을 지정하지않을때 사용하며, 자바의 와일드카드라고 생각하면 된다. 와일드카드와 동일하게 타입을 캡쳐하지않기때문에 타입안정성을 보장받지못한다. 다만 자바의 와일드카드처럼 한정적 와일드카드(bounded wildcard) 문법은 지원하지않는다. // 와일드카드처럼 사용 가능. val list: List = listOf(1, 2, 3) // 타입을 캡쳐하지않기때문에..
generic 을 이용한 배열 객체를 생성할때는 컴파일단에서 에러가 발생하게된다. List[] lists = new ArrayList[10]; ArrayList 의 배열을 만들고자하는 코드다. 대충 쉽게 이해하면 일종의 2차원 배열이라고 볼 수 있다. 하지만 이 코드는 'generic array creation' 이라는 컴파일 에러와 함께 컴파일 되지않는다. 왜 이럴까? 먼저 제네릭이 추구하는 바가 뭔지를 알아보고, 배열과 제네릭 리스트의 차이를 이해해야 컴파일러가 저걸 왜 막는지 이해할 수 있다. 제네릭이 추구하는 바는 타입 안정성이다. 제네릭이 사용된 코드는 타입 안정성을 보장해야한다. 타입 안정성이 보장될 수 없다면 제네릭은 사용될 이유가 없다. 그런데 배열과 제네릭의 차이점으로 인해 제네릭 배열은..
1. Genericsjava5에서 부터 추가된 제네릭은 타입을 파라미터로 만들어 넘어오는 파라미터에 따라 다른 타입이 되게끔한다. 이로서 얻을 수 있는 이득은 타입이 동적으로 변하게 되기때문에 개발자가 직접 타입체크를 하고 타입 캐스팅을 하는 코드가 없어지게되어 정적인 타입 안전성을 확보할 수 있다. public class Test { public static void main(String[] arg) { MyOptional stringOptional1 = MyOptional.ofNullable("hello"); MyOptional stringOptional2 = MyOptional.ofNullable(123); } } class MyOptional { T t; private MyOptional(T t)..
자바에 추가된지 참 오래된기술이지만 아직도 익숙치않은 기술이 하나있다.Generics(제네릭)이 바로 그것인데 제네릭에대한 포스팅을 간략히 진행하려한다.사실 제네릭이란 단어는 생소하더라도 초보개발자들도 당연하게 사용하고있는 부분이있는데 콜렉션프레임워크에서 타입을 제한할때 주로 사용하고있다. List numbers = new ArrayList(); ArrayList는 선형 자료구조로 배열과 유사한 자료구조이다. 배열과 다른점은 동일한 자료형만 관리할 수 있다는 점과 크기변환이 자유롭지않다는 것이다.제네릭을 사용하지않을때는 이런식으로 사용한다. List numbers = new ArrayList(); numbers.add(100);numbers.add(200); Object element = numbers...
- Total
- Today
- Yesterday
- mariadb
- clean code
- frontend개발환경
- EffectiveJava
- Design Pattern
- go-core
- javascript
- code
- java
- MySQL
- Kotlin
- generics
- 정규표현식
- Git
- JPA
- DesignPattern
- frontcode
- java8
- toby
- http
- spring cloud
- JavaScript Core
- db
- OOP
- servlet
- programming
- Jackson
- TEST
- backend개발환경
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |