|
이 섹션은 Move Inner to Upper
Level 리팩토링 위에서 당신에게 포괄적인 overview를 제공하고 how 이 리팩토링이 IntelliJ IDEA에서 사용될 수 있는가를 제공합니다.
Move Inner to Upper 리팩토링은 사용자에게 내부 클래스를 상위 수준으로 옮기는 것을 허락합니다. 그 결과로, 내부 클래스는 더 높은 수준으로,
그리고 만일 결과적인 클래스가 최고의 수준에 있으면 새로운 파일에 옮겨집니다. 모든 상응하는 참조는 자동적으로 업데이트됩니다.
내부 클래스가 정적이 아니고 메소드와 외부 클래스의 필드에 접근을 필요로 할 경우에, 외부 클래스 인스턴스는 이동하는 내부 클래스의 생성자에 매개 변수로서 넘어갈 수 있습니다.
예를 들면, 우리는 다음 코드를 가집니다:
public class OuterClass {
public void foo() {
//some code here
}
public class InnerClass {
public void innerClassMethod() {
foo();
}
}
}
Moving Inner to Upper 리팩토링 후에 OuterClass 코드는 다음과 같이 보일 것 입니다:
public class OuterClass {
public void foo() {
//some code here
}
}
그리고 이것은 InnerClass 입니다 (새로운 파일에서):
class InnerClass {
private OuterClass outerClass;
public InnerClass(OuterClass outerClass) {
this.outerClass = outerClass;
}
public void innerClassMethod() {
outerClass.foo();
}
}
내부 클래스를 상위 수준으로 이동하기 위하여:
1. Project 보기에서:
내부 클래스를 선택하고 클래스 멤버를 오른쪽 버튼 클릭하여 불려지는 팝업 메뉴에서 Refactor
| Move... 을 클릭하십시오.
|

|
당신은 클래스를 선택하기 위해 어떤 다른 보기를 사용할 수 있습니다, 예를 들면 Structure.
|
editor 에서 :
원하는 클래스 선언에서의 캐럿을 배치하고 주 메뉴에서 또는 에디터에서 오른쪽 버튼을 클릭하는 것에 의해 불려지는 팝업 메뉴 에서 Refactor |
Move...를 클릭하십시오.
|

|
당신이 정적인 내부 클래스를 옮기려고 하고 있을 때, 선택한 내부 클래스를 위한 리팩토링을 선택하면 당신은 다음의 다이얼로그를 볼 것입니다:
|

만일 내부 클래스가 다른 클래스로 옮겨지면 Move
Members
리팩토링을 보십시오.
2. Move
Inner to Upper Level 다이얼로그가 나타날 것입니다:

|
클래스 이름
|
|
이 텍스트 필드에서 당신은 선택 클래스의 이름을 편집할 수 있거나, 기존의 하나를 사용할 수 있습니다.
|
|
매개 변수로서 외부 클래스의 인스턴스 넘기기
|
|
이 체크 박스가 선택될 때 Parameter
name
텍스트 필드는 사용 가능하게 되고 당신은 외부 클래스의 매개 변수 이름을 편집할 수 있거나, IDEA에 의해 제안된 하나를 사용할 수 있습니다.
만일 이 체크 박스가 선택되지 않으면 선택된 클래스는 단지 레벨 업 하여 이동되고 상응하는 참조는 업데이트됩니다.
|

|
만일 옮겨지는 클래스가 정적인 것이라면 이 체크 박스는 불가능하게 하게 됩니다.
|
|
|
변경된 미리 보기 사용
|
|
이 체크 박스를 선택하면 당신은 어떤 사용이 발견되었는지 추적하고, 그들의 교체를 승인하도록 허락합니다. 이 체크 박스가 선택되지 않을 때, IDEA는 교체 기능를 자동적으로 수행합니다.
|

|
심지어 체크 박스가 선택되지 않았을 때도, 만일 발견된 사용이 어떤 읽기 전용 파일에서 존재하면 교체 사용을 확인하는 프롬프트가 당신에 대기될 것 입니다.
|
Refactoring
Preview 다이얼로그에서 (만일 그것이 나타나면) 당신은 수행된 변경을 분석할 수 있습니다. 리팩토링과 함께 진행하기 위해서, Do
Refactor를 클릭합니다, 그렇지 않다면 Cancel 을 클릭합니다. 상세한 것을 보려면 Refactoring
Preview를 보십시오.
|
|
3. OK를 누릅니다, 그리고 원하는 클래스는 이동될 것입니다.
|