아델
30
2018-01-14 23:06:22 작성 2018-01-14 23:09:22 수정됨
2
203

자바 메소드 참조 질문


코드 전체를 올리지 못한점 죄송합니다


class Frined{

....

Company cmp;

...

public Company getCmp(){return cmp;}

}

class Company{  ...}


class What{

public static void showCompAddr(Optional<Friend>f){

String addr=f.map(Friend::getCmp)....

}

회색으로 칠해진 코드가 이해가 안가는데요

처음에 보고 메소드 참조를 하고있구나 했습니다

Friend 클래스로 가서 메소드를 보니  static 함수가 아닌걸 알게 됬고 의문이 생겼습니다

객체 전달없이 메소드 참조를 할려면  다음과 같은 람다식

(a,b)->a.bigger(b); 두인자를 전달하고 하나의 인자의 메소드에 다른하나의 인자가 전달되는 형태

와 같은 람다식이여야 하는데  


getCmp는 조건을 만족하지 않는데  이런 표현이 가능한가요???


가능하다면 이유를 알고 싶습니다

0
0
  • 답변 2

  • LichKing
    9k
    2018-01-14 23:21:19

    메서드 레퍼런스에 대해 부분적으로 이해하고계신거같은데요.

    아마도 getCmp() 메서드는 인자가 없는 메서드일거같네요. Optional에서 꺼내온 Friend 객체 1개밖에 없고 해당 객체의 인자없는 메서드 getCmp() 를 호출하기위해 저런식으로 메서드 레퍼런스 작성이 가능합니다.

    제블로그긴 한데 예전에 메서드레퍼런스 문법에 대해 정리한게 있어서 첨부해봅니다.

    http://multifrontgarden.tistory.com/126

    1
  • 아델
    30
    2018-01-14 23:28:03

    ㄴ 감사합니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.