인스턴스 메소드 리팩토링으로 변환

 

섹션은 Convert to Instance Method 리팩토링 위에서 포괄적인 overview how  리팩토링이 IntelliJ IDEA에서 사용될 있는가를 제공합니다.

개요


Convert to Instance Method 리팩토링은 초기 메소드의 타입 매개 변수가 되는 클래스와 함께 정적, 클래스 인스턴스 메소드에 있어서의 정적인 메소드를 변환하기 위해 사용됩니다.


예를 들면, 우리는 리팩토링 전에 다음 코드를 가집니다:

 
    public class MyClass {
        ClassA classA = new ClassA();
        ClassB classB = new ClassB();
 
        static public void greatMethod(ClassA classA, ClassB classB){
            System.out.println("classA = " + classA);
            System.out.println("classB = " + classB);
        }
 
        public void myMethod(){
            MyClass.greatMethod(classA, classB);
        }
    }



게다가  클래스, ClassA  ClassB 같은 패키지에 있습니다.  Convert to Instance Method 리팩토링 이후 코드는 다음과 같이  것입니다:
 
    public class MyClass {
        ClassA classA = new ClassA();
        ClassB classB = new ClassB();
 
        public void myMethod(){
            classB.greatMethod(classA);
        }
    }



그리고ClassB  : 

 
public class ClassB {
    public void greatMethod(ClassA classA){
        System.out.println("classA = " + classA);
        System.out.println("classB = " + this);
    }
}



인스턴스 메소드로 변환


 1.  환을 하기 위해, 대체로 선언 또는 리팩토 되는 메소드의 사용 상에서 캐럿을 배치하십시오.  메소드는 반드시 정적일 것이고 매개 변수는 당신의 프로젝트로부터 클래스 타입일 것임에 틀림없습니다.  바꾸어 말하면, 당신은 리팩토링에 대한 String타입으로서 그런 매개 변수를 사용할 없고 그것들은 심지어 고려되지 않습니다.

그리고 메뉴 또는 에디터에서 오른쪽 버튼을 클릭하는 것에 의해 불려지는 팝업 메뉴에서 Refactor Convert to Instance Method...  항목을 클릭하십시오. 다음의 Convert to Instance Method 다이얼로그가 나타납니다:



 2.   Select an instance parameter 텍스트 필드에서, 변환된 매개 변수 이름을 지정하십시오.

 3.   메소드는 선택한 매개 변수(ClassB) 부합하는 클래스로 옮겨집니다.  정적인 메소드로의 콜은 클래스 인스턴스 메소드로의 콜에 변경됩니다. 그리고 ClassB 인스턴스로의 콜은 this 위해 변경됩니다.

특별한 주석


만일 변환된 매개 변수가 null  이라면, 당신에게 다음의 경고가 프롬프트 것입니다.



생성 코드는 잘못될 것입니다.


그러나, 만일 선택한 매개 변수가 null로서 생성되지 않으면 그것은 교묘할지도 모릅니다 그러나 그것은 null 입니다(null 메소드 리턴 값인 처럼).  당신은 그런 경우에서 신중해야만 합니다.  IDEA 그것을 인식할 없고 리팩토링은 매끄럽게 작동 것입니다.  코드는 심지어 컴파일 있지만 적절하게 실행되지 않을 것입니다.