2012-07-31 2 views
0
package org.test.toolkit.file; 

public interface FileType { 

    public enum Image implements FileType { 

     JPG; 

     public String toString() { //duplicated code 
      return "." + super.toString().toLowerCase(); 
     }; 
    } 

    public enum Office implements FileType { 

     DOC; 

     public String toString() { 
      return "." + super.toString().toLowerCase(); 
     }; 
    } 

    public enum PlainText implements FileType { 

     TXT; 

     public String toString() { //duplicated code 
      return "." + super.toString().toLowerCase(); 
     }; 
    } 

} 

중복 코드를 효율적으로 제거하는 방법. 아마도 다른 클래스 개체에 정의 된 정적 메서드를 사용하는 것이 좋습니다? 아니면 내 문제를 해결할 더 좋은 방법이 있습니까?Java에서 코드 예제의 중복 된 코드를 제거하는 방법은 무엇입니까?

public String toString() { 
     return "." + super.toString().toLowerCase(); 
    }; 
+1

중복 된 질문을 제거하는 방법은 무엇입니까? – doNotCheckMyBlog

+0

업데이트 해 주셔서 감사합니다. 내 영어가 불량입니다. – jiafu

답변

3
public enum Type 
{ 
    Image,Document,Text; 
} 
public enum FileType 
{ 
    DOC(Type.Document), JPG(Type.Image),GIF(Type.Image),TXT(Type.Text); 
    private Type type; 
    private FileType(Type t) 
    { 
     this.type=t; 
    } 
    public Type getType() 
    { 
     return type; 
    } 
    public String toString() 
    { 
     return "." + super.toString().toLowerCase(); 
    } 
} 

?

+0

그러면 파일 유형을 별도의 열거 형으로 연결하고 DOC (Type.Document), JPG (Type.Image), TXT (Type.Text)를 사용할 수 있습니다. –

+0

우선, 당신의 스 트래 티지를 사용하지만, PNG/BMP를 추가해야한다면 JPG와 비슷한 이미지에 속할 것입니다. 그래서 유형을 분리하려면이 방법을 사용해야합니다. 그러나 유형이 스플릿 된 후에는 복제 된 코드가 생성됩니다. – jiafu

+0

디자인의 시작 부분에서 당신의 스 트래 티지를 사용하지만 PNG/BMP를 추가해야한다면 JPG와 비슷한 이미지에 속할 것입니다. 그래서 유형을 분리하려면이 방법을 사용해야합니다. 그러나 유형이 스플릿 된 후에는 복제 된 코드가 생성됩니다. – jiafu

관련 문제