2019-11-09 TIL

2019-11-09

Kotlin, Android

두 종류의 sort 메서드

sortBy 메서드는 in-place sort이며 대상 어레이를 mutate해서 리턴한다. (mutableList에 사용해야 함)

반면 sortedBy 메서드는 새로운 어레이를 반환한다.

synthetic property

kotlin에선 setText()처럼 getter/setter 패턴의 메서드를 사용하면 warning이 뜬다.

내용은 Use of setter method instead of property access syntax 이며 Java의 get과 set을 Kotlin synthetic properties로 교체할 수 있을 때 뜬다고 부연 설명을 확인할 수 있다.

synthetic property는 Kotlin Android Extensions Plugin의 일부분인 듯 하다.

Kotlin Android Extensions Plugin

import kotlinx.android.synthetic.main.activity_main.*

이 한줄로 xml의 모든 요소들을 가져올 수 있고, Java에서 사용하던 findViewById() 없이 요소들(View)를 참조할 수 있다. (View Binding)

게다가 위에 언급한 getter/setter 패턴을 대체할 수 있는데,

appCompatTextView.setText("blablah..") // 이것보다는

appCompatTextView.text = "blablah.." // 이렇게 쓰면 된다

위와 같은 방식으로 뷰 xml에 정의된 attribute들을 조작할 수 있다.

(get의 경우 당연히 property에 할당이 따라오지 않는다면 호출?된다)

이 warning은 AppCompatTextView의 인스턴스에 setText를 사용할 때 보였는데, 정말 모든 상황에 뜨는지는 아직 모르겠다. 근데 아마 항상 뜨겠지.

Minchang Kim
Minchang Kim
웹/앱 개발자 김민창입니다! 좋은 하루 되세요!