Move Inner to Upper Level Refactoring  

 

섹션은 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 누릅니다, 그리고 원하는 클래스 이동될 것입니다.