• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

16강 Java에서 확장함수 가져오기 사용 중 오류가발생합니다

22.12.02 17:51 작성 조회수 329

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

Java에서 Kotlin을 불러서 사용할 때 인스턴스화 해서 사용하면 오류 없이 잘 실행이 되는데 Kotlin 클래스명으로 객체를 불러서 사용하려고 하면 에러가 발생해서 실행이 안됩니다

발생하는 에러는

java: non-static method lastChar1(java.lang.String) cannot be referenced from a static context

입니다 왜그런지 알수있을까요? ㅠㅠ

답변 1

답변을 작성해보세요.

1

안녕하세요, 동진님~!! 금요일에도 이렇게 열심히 공부하시고, 대단하십니다!! 😊

넵넵, 바로 답변 드려보자면, 확장함수의 경우 .class 파일로 변환될 때, '정적 팩토리 메소드'로 변환됩니다!!

실제 아래 이미지에서 startsWithA 라는 확장함수가 Java의 static method로 변환되었지요!

image

Java의 static method는 해당 클래스를 인스턴스화 하여 접근하는게 아니라, 클래스.함수이름 자체로 접근해야 하기 때문에 Java에서 Kotlin의 확장함수를 사용하고 싶으시다면 다음 코드와 같이

public static void main(String[] args) {
  Lec16MainKt.startsWithA("3");
}

사용해보시면 잘 동작할 것 같습니다 ㅎㅎㅎㅎ

 

언제든지 또 궁금하신 내용 있으시면, 편하게 질문 올려주세요~!! 감사합니다!!! 🙇🙇

 

이동진님의 프로필

이동진

질문자

2022.12.04

답변감사합니다!!