2012-07-31 103 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 2012-07-31 01:35:28

+0

感謝您的更新,我的英文很差 – jiafu 2012-07-31 02:06:57

回答

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); – 2012-07-31 01:38:11

+0

首先,我使用你的策略,但如果我需要添加PNG/BMP,它將屬於與JPG類似的圖像。所以我需要採用這種方法來分割類型。但是在類型分裂之後,會生成重複的代碼。 – jiafu 2012-07-31 01:59:50

+0

在設計之初,我使用你的策略,但是如果我需要添加PNG/BMP,它將屬於與JPG類似的圖像。所以我需要採用這種方法來分割類型。但是在類型分裂之後,會生成重複的代碼。 – jiafu 2012-07-31 02:05:28