2012-07-31 109 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