게시글
질문&답변
2021.01.04
Comparator interface를 compareToIgnoreCase로 메소드 레퍼런스로 변경 관련
구글링을 해본 결과 제가 강의 내용에서 '임의 객체의 인스턴스 메소드 참조' 에 대한 이해를 다른 '스태틱 메소드 참조', '특정 개게의 인스턴스 메소드 참조', '생성자 참조'와 같이 방식으로 이해했었습니다. 하기 링크 참고를해서 다시 강의를 보니 이해가 되었습니다. https://imcts.github.io/java-method-reference/ 첫 번째 형태에서는 첫번째 파라미터가 메소드의 수신자가 되고, 나머지 파라미터는 해당 메소드로 전달 됩니다.ex) String::compareToIgnoreCase는 (x, y) -> x.compareToIgnoreCase(y) 와 같습니다.
- 4
- 8
- 553
질문&답변
2021.01.04
Comparator interface를 compareToIgnoreCase로 메소드 레퍼런스로 변경 관련
sort의 인자 타입은 확인 했는데, public static T> void sort(T[] a, Comparatorsuper T> c) 저 Comparator내에 abstract method가 int compare(T o1, T o2); 한 개라서 해당 method를 lambda로 치환한게 (o1, o2) -> 0 이구 여기서 parameter가 o1, o2 두개 인데 method reference로 치환되는 compareToIgnoreCase는 public int compareToIgnoreCase(String str) { return CASE_INSENSITIVE_ORDER.compare(this, str);} String 한개 입니다. 그래서 이게 어떻게 method reference로 치환되는지 이해가 잘 안가네요..; compareToIgnore안에 구현된 CASE_INSENSITIVE_ORDER.compare(this, str); 라면 이해가되는데요.. 강의를 몇번 돌려 봤는데도 잘 이해가 안가서 다시 한번 여쭤봅니다 ^^;;; 혹시 참조하려고 하는 method 내부에 this를 사용하면 참조하려고 하는 method의 param에 자기 자신에 대한 타입이 하나 더 들어간다고 생각해야 하나요?
- 4
- 8
- 553