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

안드로이드 스튜디오 인식이 안되네요

0 추천

 

위에서 new가 주황색으로 안뜨고 회색으로 뜨네요. 해결방법을 아시나요?

joojooso (140 포인트) 님이 2023년 2월 16일 질문
색깔보다는 에러인지 아닌지를 확실하게 체크해보세요. 마우스를 가져다 대시면 힌트가 나올거예요. 그리고 코드를 한라인만 올리지 마시고 안되는 부분은 다 올려주시는게 나을 것 같아요.

1개의 답변

+1 추천

아마도 안드로이드가 Java8의 람다표현식을 기본으로 지원하기 때문에 착각하신 것 같아요. 메소드가 하나인 인터페이스의 인스턴스는 간략한 형태로 고쳐쓸 수 있고 안드로이드 스튜디오가 그걸 권장하기 때문에 회색으로 보여주는 걸로  보여요.

예를 들면

btn_register.setOnClickLisetner(new View.OnClickListner() {
   @Override
    public void onClick(View view) {

    }
});

위에서 View.OnClickListener는 onClick 메소드를 하나가진 인터페이스의 인스턴스죠. 이런 경우는 new 키워드와 인터페이스명, 메소드 선언부를 생략하고 메소드 파라미터와 onClick에 필요한 코드만 바로 작성할 수 있습니다. 즉 아래처럼 됩니다.

btn_register.setOnClickLisetner{ view ->
   // 메소드 몸체
}

위처럼 다 생략하고 view라는 인자명과  화살표 ->를 쓰신 후에 메소드 코드를 바로 작성하시면 됩니다. view 인자를 사용하지 않으면 이것도 생략하실 수 있습니다.

btn_register.setOnClickLisetner {
   // 메소드 몸체
}

람다표현식의 기능이 이것말도도 좀 더 있지만, 질문과 관련된 내용은 이걸로 충분할 것 같습니다.

이점은, 쓸데없는 new 와 인터페이스명, 메소드명까지 읽어야할 필요가 없기 때문에 코드가 간결해 보입니다. 모던한 랭귀지들은 지원하는 기능이라고 보시면 되구요, 람다표현식을 아는 개발자들은(대부분일겁니다) 사용을 합니다. 참고로 Fucntional programming(함수형 프로그래밍)을 하려면 람다가 꼭 필요하죠. 그래서 Kotlin이 메소드 대신이 함수를 사용하는 이유이기도 합니다.

spark (227,530 포인트) 님이 2023년 2월 16일 답변
spark님이 2023년 2월 16일 수정
...