Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- RxJava
- Kotlin
- C++
- Flutter TextField
- C
- FLUTTER
- Rxjava2
- kodility
- NDK
- Django REST Android
- 코틀린
- Android
- Django REST
- flutter firestore
- android push
- 안드로이드 구글맵
- 안드로이드
- android architecture component
- RxAndroid
- Java
- Django REST framework
- Python
- dart
- Android P
- mfc
- 알고리즘
- UWP
- C/C++
- livedata
Archives
- Today
- Total
개발하는 두더지
[Effective Java 규칙25] 배열대신 리스트를 써라 본문
[Effective Java 규칙25] 배열대신 리스트를 써라
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
제네릭과 배열이 따르는 자료형 규칙은 서로 많이 다르다. 배열은 공변 자료형이자 실체화 가능 자료형이다. 제네릭은 불변 자료형이며, 실행시간에 형인자의 정보는 삭제된다. 따라서 배열은 컴파일 시간에 형 안전성을 보장하지 못하며, 제네릭은 컴파일 시점에 형 안전성을 확보하고 실행 시 형인자의 정보가 삭제된다. 그래서 제네릭을 사용하지 않고 작성된 레거시 코드와도 문제없이 연동이 되는 것이다.
배열은 런타임시 타입이 그대로이다.
Object[] obj = new Object[0]
제네릭은 런타임시 제네릭 정보가 삭제된다
List<String> list = new ArrayList<String>();
-> List list = new ArrayList();
즉, 컴파일과 런타임때 동일한 타입을 나타내는 것을 실체화 가능 자료형이라하고, 컴파일과 런타임때 타입이 다른 것을 실체화 불가능 자료형이라 한다.
이런 차이점때문에 제네릭과 배열은 섞어쓰는 것이 어렵다. 일반적으로 리스트 + 제네릭은 많이 쓰는 것을 봤는데 배열 + 제네릭 조합은 기억에 없을정도로 예제를 보지 못하였다.
'Java,Android' 카테고리의 다른 글
[Effective Java 규칙27] 가능하면 제네릭 메서드으로 만들 것 (0) | 2018.10.04 |
---|---|
[Effective Java 규칙26] 가능하면 제네릭 자료형으로 만들 것 (0) | 2018.10.04 |
[Effective Java 규칙23] 새 코드에는 무인자 제네릭 자료형을 사용하지 마라 (0) | 2018.09.28 |
[Effective Java 규칙22] 멤버 클래스는 가능하면 static 으로 선언하라 (0) | 2018.09.28 |
[Effective Java 규칙21] 전략을 표현하고 싶을 때는 함수 객체를 사용하라 (0) | 2018.09.28 |
Comments