Ŭ���� �ñ׳��� �����丵�� ����

 

�� ������ Change Class Signature  ï¿½ï¿½ï¿½ï¿½ï¿½ä¸µ ������ ��ſ��� ��������  overview�� �����ϰ�  how  �� �����丵�� IntelliJ IDEA���� ���� �� �ִ°��� �����մϴ�.

����

 

Change Class Signature ï¿½ï¿½ Ÿ�� �� ������ �ٲٰ�, �׵��� ������ �����ϱ� ���� ���Ǵ� Generics �� Ư���� �����丵�Դϴ�. 
 
���� ���, �츮�� �����丵 ���� ���� �ڵ带 �����ϴ�:  
 
public void changingClassSingatureMethod(){
    NewClass newClass = new NewClass();
    //some code here...
}

 

Change Class Signature ï¿½ï¿½ï¿½ï¿½ï¿½ä¸µ ���� �ڵ�� ������ ���� �� ���Դϴ�:  
 
    public void changingClassSingatureMethod(){
        NewClass<String> newClass = new NewClass<String>();
    // some code here...

 

�翬��, Ŭ���� ������ �ٲ� ���Դϴ�.

*   �����丵 ����
    
public class  NewClass { 

*   �����丵 ����
   
public class  NewClass <NewParam> { 

 

Ŭ���� �ñ׳��� ����


Ŭ���� �ñ׳����� �����ϱ� ���ؼ�:

 1.  Project, �� �ٸ� ������ Commander ï¿½ï¿½ï¿½ï¿½ Ŭ������ �����ϰų� �Ǵ� ���� �����⿡�� ������Ǵ� Ŭ���� �̸����� ij���� ��ġ��Ű��, �� ���� �˾� �޴�(Ŭ������ ������ ��ư Ŭ���Ͽ�) �Ǵ� ���� Menu Bar �� �� ��� ������� Ctrl + F6 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ OR Refactor |  Change Signature...�� Ŭ���մϴ�.

 2.  ï¿½ï¿½ï¿½ï¿½ ���̾�α� ������� �����丵 �� ������ �����ϱ� ���� ��Ÿ�� ���Դϴ�:

�Ű� ���� �׷�

�� ��Ͽ��� ����� ���õ� �޼ҵ�(���� Add ï¿½Ç´ï¿½ Remove ��ư�� ����Ͽ�)�� ���� �� ������ �߰� �Ǵ� ������ �� �ְų�, �׵��� ����(���� Move up ï¿½Ç´ï¿½ Move down ï¿½ï¿½Æ°ï¿½ï¿½ ����Ͽ�)�� ������ �� �ֽ��ϴ�.  ï¿½ï¿½ï¿½ï¿½ ����� �����ϴ� �� ���� �ʵ带 Ŭ���ϴ� �Ϳ� ���� �� ������ Ÿ���� �����ϰų�, �̸��� ���ų�, ���Ӱ� �Է��� �� �ִ� �� ������ ���� ����Ʈ ���� ������ �� �ֽ��ϴ�.  ï¿½ï¿½ï¿½ï¿½ �� ���� ���� �Ǵ� �̸��� ����Ȯ�ϸ� ��ſ��� Incorrect Data ï¿½ï¿½ï¿½Ì¾ï¿½Î±×°ï¿½ ������Ʈ �� �� �Դϴ�.


���� ���ο� Ÿ���� �� ������ �߰��Ǹ�, �װ��� ����Ʈ ���� �����Ǿ�߸� �մϴ�.  ï¿½×°ï¿½ï¿½ï¿½ ������, ����� ������ Incorrect Data ï¿½ï¿½ï¿½Ì¾ï¿½Î±×¸ï¿½ �� ���Դϴ�:


 

�̸�

�Ű� ���� �̸��� ǥ���մϴ�.

 

����Ʈ ��

����Ʈ �� ������ ǥ��/���� �մϴ�.  ï¿½Úµï¿½ �Ϸ�� intention action�� �̿�� �� �ֽ��ϴ�.

 

����� �̸����� ���

�� üũ �ڽ��� �����ϸ� ����� � ����� �߰ߵǾ����� �����ϰ�, �׵��� ��ü�� �����ϵ��� ����մϴ�.  ï¿½ï¿½ üũ �ڽ��� ���õ��� ���� ��, IDEA�� ��ü�� �ڵ������� �����մϴ�.


������ üũ �ڽ��� ���õ��� �ʾ��� ����, ���� �߰ߵ� ����� � �б� ���� ���Ͽ��� �����ϸ� ����� ��� ��ü�� Ȯ���ϴ� ������Ʈ�� ��ſ� ���� �� �Դϴ�.


Refactoring Preview ï¿½ï¿½ï¿½Ì¾ï¿½Î±ï¿½(���� �װ��� ��Ÿ����)���� ����� ����� ������ ��� �� �ֽ��ϴ�.  ï¿½ï¿½ï¿½ï¿½ï¿½ä¸µï¿½ï¿½ �Բ� �����ϱ� ���ؼ�, Do Refactor�� Ŭ���մϴ��׷��� �ʴٸ� Cancel �� Ŭ���մϴ�. ���� ���� ������ Refactoring Preview�� ���ʽÿ�.


 3.   OK�� �����ϴ�, �׸��� Ŭ���� ���� �Բ� Ŭ���� �ñ׳����� ����� ���Դϴ�.


���� ����� ����Ʈ ���� ���� �Ű� ������ ��� �ϳ��� �����ϴ� �Ű� ������ �߰��ϸ�, �׷� ���� ��뿡�� ����� ���Դϴ�.


 

���̽� ���

 

*   Ÿ�� �������� �ٸ� Ŭ�����κ��� �ٸ� Ÿ���� �������� �����Ͽ� �ٸ� �����Ҹ� Ȯ���ϴ� �ٿ�带 ���� �� �ֽ��ϴ�. ���� ���, public class ClassA <T, E> ���� �ڵ�� public class ClassA <T, E extends T>�� ���� ������ �� �ֽ��ϴ�.
�׷����� �Ű� ���� ������ ó���� public class ClassA <E, T> ���ٸ�, Change Class Signature �����丵�� ��� �� ��� �Ӹ��ƴ϶� Ŭ���� �ñ׳��Ŀ��� �� �Ű� ���� ������ �����ϱ⿡ ������ �� �Դϴ�.

*   ���� �� �� ������ �ٸ� �Ϳ� �����Ѵٸ� IDEA�� ������ ������ ���̽��� ���������� ó���ϰ� �� ������ �����ϴ� ����� ������ �� �ֽ��ϴ�.  ���� ��� ����� ������ Ŭ������ �����ϴ�:

 
public class TheClass <FirstParam> {
    //class code
}

 

�׸��� TheClass�� ���� ��� �����ϴ� ���� �ִ� UsageClass

 
public class UsageClass {
TheClass<String> theClass = new TheClass<String>();
TheClass<Integer> theClassInt = new TheClass<Integer>();
//class code
}
 

�����丵�� �����ϰ� TheClass ���� ����Ʈ �� List<FirstParam> ï¿½ï¿½ �Բ� SecondParam ï¿½ï¿½ï¿½Î¿ï¿½ �� ������ �߰��Ͻʽÿ�.

�׷���, ���� List�� ���� ����Ʈ���� ������, ��ſ��� �����ϴ� Import Assistant  ���Ȱ� �Բ� ������Ʈ �� ���Դϴ�.


�ڵ� �Ϸ�� ���� �̿�� �� �ֽ��ϴ�.



�����丵 �ڵ尡 ������ ���� ���� �Ŀ�:

public class TheClass <FirstParam,SecondParam> {
    //class code
}
 
public class UsageClass {
   TheClass<String, List<String>> theClass = new TheClass<String, List<String>>();
   TheClass<Integer, List<Integer>> theClassInt = new TheClass<Integer, List<Integer>>();
 
    //class code
}

 

�Ű� ������ Ŭ���� �ν��Ͻ� �Ű� �������� ������ ����� �Բ� �߰��˴ϴ�.