마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

코틀린 코드인데 문법적으로 이해가 안 돼서 문의드립니다

0 추천

책을 보며 공부하던 중 이해가 안 돼서 올려 봅니다.

DatePicker 의 값을 현재 날짜로 세팅하는 구문인데, DatePicker.init() 의 파라메터 중

object:CalendarView.OnDateChangeListener 와 DatePicker.OnDateChangedListener 가 좀 이해가 안 됩니다.

 

val calendar = Calendar.getInstance()
datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),
    object:CalendarView.OnDateChangeListener,
    DatePicker.OnDateChangedListener {
        override fun onDateChanged(view: DatePicker?, year: Int, monthOfYear: Int, dayOfMonth: Int) {
            textView.text = makeConstellationString(datePicker.month, datePicker.dayOfMonth)
        }

        override fun onSelectedDayChange(view: CalendarView, year: Int, month: Int, dayOfMonth: Int) {
        }
})

 

이해 안 되는 부분은,

1. init()의 시그니처를 찾아보니 아래와 같이 파라메터가 4개로 나옵니다.

    public void init(int year, int monthOfYear, int dayOfMonth, OnDateChangedListener onDateChangedListener)

그런데 위 소스에서 object:CalendarView.OnDateChangeListener 는 왜 있는 건가요?

 

2. object:CalendarView.OnDateChangeListener 에서 object: 라고 써 있는 이것의 문법적 의미가 무엇인지요?

 

답변 미리 감사 드립니다.

Ralph (120 포인트) 님이 2019년 6월 5일 질문

1개의 답변

0 추천
1. 날짜값이 변경될때, 해당값을 인터페이스를 통해 받아오는 겁니다.

코드를 보면 textview.text를 통해서 받아온 값을 textview에 정해주고 있죠

 

2. 코틀린에서는 객체를 생성하기 위해서 new를 쓰지 않습니다.

인퍼에이스를 상속받는 클래스를 정의하고 생성하기 위해 object 명령어를 붙입니다
Bateaux (5,200 포인트) 님이 2019년 6월 5일 답변
...