리팩토링이 가능한 곳에서 인터페이스 사용

 

섹션은 Use Interface Where Possible  리팩토링 대해 당신에게 포괄적인  overview  how  리팩토링 기능이 IntelliJ IDEA에서 사용될 있는가를 제공합니다.

개요


Use Interface Where Possible 리팩토링 기능은 사용자에게 베이스 클래스/인터페이스부터 조상 클래스 또는 같은 인터페이스를 구현하는 내부 클래스의 인스턴스 파생한 정의 메소드의 실행을 위임하는 것을 허락합니다.


예를 들면, 당신은 다음 클래스를 가집니다:

 
public class ClassParent {
               void method1(){
                   //some code here
               }
 
               void method2(){
                   //some code here
               }
}
 
public class ClassChild extends ClassParent
{
               void method1() {
                 super.method1();
               }
               void method2() {
                 super.method2();
               }
}
 
public class UsageClass {
               void myMethod(){
                 ClassChild classChild = new ClassChild();
                 classChild.method1();
                 classChild.method2();
    }
}

 

ClassChild에서 리팩토링 적용하십시오.  UsageClass  다음과 같이 변경될 것입니다:
 
public class UsageClass {
               void myMethod(){
                 ClassParent classChild = new ClassChild();
                 classChild.method1();
                 classChild.method2();
    }
}
 

가능하면 인터페이스 사용


가능하면 인터페이스 또는 슈퍼클래스를 사용하기 위해서:

 1.   에디터 또는 메소드가 부모 클래스 또는 인터페이스로 위임된 보기 ( Project, Commander ) 중의 하나에서 클래스 위의 캐럿을 설정하고 메인 메뉴, 또는 오른쪽 버튼을 클릭하여 불려지는 팝업 메뉴에서 Refactor |  Use Interface Where Possible 클릭하십시오.
 2.   당신은 Use Interface Where Possible  것입니다.

Change Usages of  <your_package_name>.<your_class_name> to   

당신이 사용할 필요가 있는 가용한 부모 클래스/인터페이스의 목록으로부터의 선택하십시오.

Use interface/superclass  in instanceof  

만일 선택되면, IDEA 선택된 슈퍼클래스/인터페이스를 위한 instanceof 스테이트먼트의 존재를 위해 확인할 것이고, 만일 무언가 발견되면 그것을 변경할 것입니다.
 
예를 들면, 당신은 ParentInterface 태그 인터페이스인 다음의 코드(위의 예제에 기초하여) 가집니다:

 
public interface BaseInterface {
               void myMethod();
}
 
public interface ParentInterface extends BaseInterface  {
            //some code here
}
 
public class ClassChild implements ParentInterface
{
               public void myMethod(){
            //some code here
               }
}
 
public class UsageClass {
               void myMethod(){
                 ClassChild child = new ClassChild();
                 child.myMethod();
 
                 if(child instanceof ParentInterface) {
            //some code here
                 }
               }
}

 

그리고 리팩토링 프로세스가 ParentInterface  적용되고  후에 UsageClass  다음과 같이  것입니다:
 
public class UsageClass {
               void myMethod(){
                 ClassChild child = new ClassChild();
                 child.myMethod();
 
                 if(child instanceof BaseInterface) {
            //some code here
                 }
               }
}

 

변경된 미리 보기 사용

체크 박스를 선택하면 당신에게 사용이 발견된 것의 정보를 계속 얻는 것을 허락하고, 당신에게 그들의 교체를 승인하는 것을 허락합니다.   체크 박스가 선택되지 않을 , IDEA 교체 기능를 자동적으로 수행합니다.


심지어 체크 박스가 확인되지 않았을 때도, 만일 발견된 사용이 어떤 읽기 전용 파일에서 존재하면 당신에게 사용 교체를 확인하기 위해 프롬프트 것입니다.


Refactoring Preview  다이얼로그(만일 그것이 나타나면)에서, 당신은 수행된 변경을 분석할 있습니다.  리팩토링과 함께 진행하기 위해서, Do Refactor   클릭하십시오, 그렇지 않다면 Cancel 클릭하십시오. 더욱 상세한 것은  Refactoring Preview 보십시오.


그리고 만일 어떤 클래스/인터페이스 사용도 부모 클래스/인터페이스로 교체될 없으면, 당신에게 다음의 메시지가 프롬프트 것입니다: