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

코틀린 익명함수 자동완성 질문

0 추천
자바를 사용하는 안드로이드 스튜디오에서는 리스너를 등록할 때 new 키워드를 넣어주고 엔터만 쳐도 인터페이스와 메소드가 자동완성돼서 매개변수의 타입 같은 것들을 한눈에 파악후 응용하거나 배우기 쉬웠는데

코틀린에는 그런 기능이 없나요??

계속 검색해서 람다식을 사용하고 있긴 한데 편하기는 해도 이런 식으로 사용하는 건 배우는 데에는 별로 도움이 되지 않는 것 같습니다
ㅇㅇㅇㅇㅇㅇㅇㅇ (1,000 포인트) 님이 2023년 1월 3일 질문
ㅇㅇㅇㅇㅇㅇㅇㅇ님이 2023년 1월 3일 수정

1개의 답변

+1 추천
 
채택된 답변

코틀린도 자바처럼 object 키워드를 이용하면 동일합니다. 예를 들면 OnClickListener를 뷰에 사용한다면,  아래처럼 만들고,

button.setOnClickListener(object: View.OnClickListnener() {
   // 생략
});

object 부분에서 마우스 오른쪽 버튼이나 단축기를 통한 컨텍스트 메뉴에서 멤버함수를 오버라이드 하면 됩니다. 다른 방법으로는 안드로이드 스튜디오에 코드 템플릿을 등록해 두고 사용하셔도 동일한 효과를 얻을 수 있습니다.

람다를 사용하는 것이 딱히 문제가 된다거나 배우는데 별로 도움이 되지 않는 다는 건 아마도 개인간의 차이라고 생각합니다. 람다표현식은 이미 대부분의 모던 랭귀지의 기본 기능이고, 함수형 언어에서는 기본적으로 지원되는 아주 중요한 부분입니다. 따라서 람다표현식은 잘 알아두시면 좋을 것 같습니다.

spark (227,830 포인트) 님이 2023년 1월 3일 답변
ㅇㅇㅇㅇㅇㅇㅇㅇ님이 2023년 1월 4일 채택됨
저도 object : 까지 입력하고 alt + enter 를 이용해서 자동완성 하는 기능을 최대한 사용하고 있지만

타입을 기입해줘야 하는 콜백의 <> 안에 타입이 자동으로 Any로 들어가서 직접 입력해줘야 하거나

{ } 블록을 입력해 줘야만  implements members로 자동으로 추가가 되는 둥

자바의 new 키워드와 enter키로 익명함수를 사용할 때랑은 다르게 많이 복잡하거나 힘든 느낌이 있습니다

자바의 방식은 설령 제가 해당 클래스를 막 알게 된 참이라 callBack 함수의 파라미터를 모르더라도 자동으로 어떤 인터페이스가 들어가며
어떤 객체가 전달되어 오는지 알려줘서 기능적으로 이해하기가 편했는데

람다식은 매개변수가 여러 개거나 해당 콜백 함수에 대한 지식이 부족하거나 하여  해당 기능에 익숙하지 않은 사용자일 경우는 알아보기가 힘든 것 같습니다...
자동완성 같은 면은 아직 자바에  비하면 부족한 면이 있습니다. 다만  자바도 8부터는 람다를 즐겨 사용하기 때문에 람다의 사용은 익숙해져야 하는 부분인 것 같습니다. 그리고 님과 같이 전체 선언부가 자바처럼 보이지 않아 불편하다고 하는 개발자들도 있지만, 정 반대로 없는 것이 더 읽기 편하다는 개발자들도 존재합니다.
코드를 읽다보면 클래스가 중요하긴 하지만, 콜백 인터페이스같은 경우는 클래스 자체보다는 그 안에 있는 멤버 함수가 더 의미가 있기 때문에, 이 부분에 초점을 두면 람다 표현식이 더 유용한 측면이 있습니다. 그리고 함수형 코드를 작성하려면 람다표현식이 없으면 아주 불편하게 됩니다. OOP도 함수형 프로그래밍의 기능을 점점 더 많이 채용하는 추세입니다.
이미 광범위하게 사용되는 기능이므로, 거기에는 타당한 이유가 있으므로, 이와 관련해서 더 찾아보시면 좋을 것 같습니다.
매번 답변해주셔서 감사합니다
...