이 책을 쓰는 시점에 이 기능을 리팩터링 메뉴에서 찾을 수는 없다. 하지만 객체의 메서드에서
Alt
+
Enter
를 누르면 ‘
Move
to
top
level
’ 메뉴가 나타난다. 우선
sorted
를 먼저 옮기자. 인
텔리
J
는 이 메서드를 객체 스코프에서 빼내서 파일 수준으로 옮겨준다.
예제
8.7
[
static
-
to
-
top
-
level
.
7
:
src
/
main
/
java
/
travelator
/
Shortlists
.
kt
]
@JvmStatic
fun <T> sorted(shortlist: List<T>, ordering: Comparator<in T>): List<T> {
return shortlist.stream().sorted(ordering)
.collect(toUnmodifiableList())
}
불행히도 이 변환이
@
JvmStatic
애너테이션을 없애지는 못한다. 따라서 코드를 컴파일하기
위해서는 직접 애너테이션을 삭제해야 한다. 하지만 이 변환이 적어도 정적 메서드를 호출하는
자바 코드를 고쳐준다는 사실을 알 수 있다. 우리가 직접 메서드를 최상위로 옮겼을 때는 자바
쪽의 코드에 문제가 생겼다. 원래 자바 코드에서는
Shortlists
.
sorted
로 정적 메서드를 참
조했지만 이제는 다음과 같이 참조한다.
예제
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.