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 |
Tags
- 알고리즘
- 비전공자를위한이해할수있는IT지식
- 자료구조
- programming
- 안드로이드스튜디오
- 앱개발
- 프로그래머스
- 코딩
- Android
- 자바
- 안드로이드
- androidstudio
- 개발자
- 코딩테스트
- IT도서
- Coding
- 씨쁠쁠
- Python
- PS
- 백준
- C++
- 파이썬
- kotlin
- 프로그래밍
- java
- DP
- 리액트네이티브
- 웹
- algorithm
- 동적계획법
Archives
- Today
- Total
한 발짜국
Android Studio(Kotlin) 한 줄 읽기 #2 (lateinit, RecyclerView, Property, 의존성 주입) 본문
앱
Android Studio(Kotlin) 한 줄 읽기 #2 (lateinit, RecyclerView, Property, 의존성 주입)
발짜국 2022. 11. 11. 01:47
lateinit var recyclerView: RecyclerView
lateinit (늦은 초기화)
- 전역변수로 선언 후 null 값을 지정하지 않고 초기화하는 방법
- 일반적으로, null 타입이 아닌 프로퍼티는 반드시 생성자에서 초기화되어야 한다. 하지만 프로퍼티가 의존성 주입을 통해 혹은 단위 테스트 셋업 함수에서 초기화 되어야 하는 경우 이러한 방식은 편리하지 않다.
- 이러한 경우 생성자에 null이 아닌 초기화를 제공할 수 없지만, 클래스 본문 내에서 속성을 참조할 때 null 검사를 피하고 싶을 때 lateinit를 사용한다.
- 계속해서 값이 변경될 수 있다는 속성을 위해 무조건 var을 사용해야 하며, String을 제외한 Primitive Type (Int, Float, Double, Long 등), val 키워드는 사용 불가능, getter와 setter 정의 불가능
RecyclerView
- RecyclerView는 클래스 이름일 뿐 아니라 라이브러리 이름
- 대략의 데이터 세트 효율적으로 표시 가능
- 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 RecyclerView 라이브러리가 필요할 때 요소를 동적으로 생성
- 개별 요소 재활용, 항목이 스크롤되어 화면에서 벗어나더라도 뷰 제거 대신 화면에서 스크롤된(화면에서 벗어난) 새 항목의 뷰 재사용
- 뷰 재사용 → 앱의 응답성 개선, 전력 소모 감소 → 성능 개선
기타 정리
프로퍼티 (Property)
- 일부 객체지향프로그래밍 언어에서 필드(데이터 멤버)와 메소드 간 기능의 중간인 클래스 멤버의 특수한 유형
- 읽기와 쓰기는 일반적으로 getter와 setter 메소드 호출로 수행
의존성 주입 (Dependency Injection)
- 객체가 외부에서 의존하는 또 다른 객체를 생성하고 이를 주입받아 사용하는 것
- 코드에서 두 모듈 간의 연결을 의미
- 일반적으로 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용
- 객체지향언어에서는 두 클래스 간 관계라고도 말함
- 클래스간의 의존성이 줄어들면 유지보수 시 매우 편리
아래 블로그에 정리가 잘 되어있다.
참고 블로그와 사이트
https://kotlinlang.org/docs/properties.html#checking-whether-a-lateinit-var-is-initialized
https://ddolcat.tistory.com/602
https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=ko
반응형
'앱' 카테고리의 다른 글
Android Studio(Kotlin) 한 줄 읽기 #1 (binding, Gradle, Module, setContentView, Dex File) (0) | 2022.11.09 |
---|---|
Android Studio 에뮬레이터 오류 (The emulator process for AVD has terminated) (0) | 2022.02.22 |
ReactNative에서 TypeScript? (0) | 2022.02.18 |
안드로이드 간단한 어플 만들기 - Game Selector (feat. 오징어게임) (2) | 2021.11.02 |
Comments