如何正确使用enum java/android



我以前从未使用过枚举。所以请对我耐心一点。

应用程序背景:

我创建了一个应用程序,用户可以在其中从外部存储USB设备添加三种类型的源,*music**video**pictures*
用户在usd驱动器上选择一个文件夹并将其添加到源中,然后为其添加一个类别。

THIS HAS BEEN DONE

问题是

现在我正在尝试从文件夹中读取所有文件,该文件夹具有特定的扩展名,按类别定义。

以下是将存储在xml文件中的三个类别的扩展名

<?xml version="1.0" encoding="UTF-8"?>
<Picture>
<ext>jpg</ext>
<ext>png</ext>
<ext>gif</ext>
<ext>jpeg</ext>
<ext>pdf</ext>
<ext>pcd</ext>
<ext>jpx</ext>
<ext>tif</ext>
</Picture>
<Videos>
<ext>mpeg</ext>
<ext>mpg</ext>
<ext>mpe</ext>
<ext>mpeg-1</ext>
<ext>mpeg-2</ext>
<ext>mp4</ext>
<ext>mpa</ext>
<ext>wmv</ext>
<ext>wma</ext>
<ext>wmx</ext>
<ext>rm</ext>
<ext>ra</ext>
<ext>3gp</ext>
</Videos>
<Music>
<ext>mp3</ext>
<ext>wav</ext>
<ext>dct</ext>
<ext>gsm</ext>
<ext>flac</ext>
<ext>au</ext>
<ext>ogg</ext>
<ext>raw</ext>
<ext>wma</ext>
<ext>msv</ext>
</Music>

因此,例如,如果用户选择了视频类别,我将读取所有扩展名与我的xml 中的视频类似的文件

我的问题是:

我正试图使用ENUM来完成这件事,我知道我也可以使用简单的if/else语句来完成,但我需要知道ENUM将如何工作。

我已经创建了一个定义了类别的媒体源枚举
这是代码:

public enum Media_source {
Pitures("P"), Videos("V"), Music("M");
private String statusCode;
private Media_source(String s) {
statusCode = s;
}
public String get_media_source() {
return statusCode;
}
}

然后我有一个Source类,它检查选择了哪个类别。

public class Source {
public static String source_path;
public static String source_name;
Media_source mSource;
public static void main(String[] args) {
System.out.println(Media_source.Pitures.get_media_source());
}

public Source(String name, String path) {
Source.source_name = name;
Source.source_path = path;
}
public static String getSource_path() {
return source_path;
}
public static void setSource_path(String source_path) {
Source.source_path = source_path;
}
public static String getSource_name() {
return source_name;
}
public static void setSource_name(String source_name) {
Source.source_name = source_name;
}
}

现在,我如何实际选择所选类别的所有扩展名文件
我应该如何使用枚举?

我不是在要求代码,尽管任何有帮助的材料都会很感激——我只需要把概念弄清楚。

谢谢

这是一个很棒的讲座:Google I/O 2008讲座(有效的Java重新加载)
Enum部分就在这里
由于视频质量很差,下面是幻灯片。https://sites.google.com/site/io/effective-java-reloaded

">然后我有一个Source类来检查选择了哪个类别。"-我没有看到任何代码检查Enum的类型。

这就是我使用Enums的方式,你可以做类似的事情。

声明您的枚举:

public enum Media {
IMAGE, VIDEO, AUDIO;
}

创建一个以枚举为参数的方法:

public selectStuff(Media m) {
switch(m) {
case IMAGE:
//Do image stuff
break;
case VIDEO:
//Do video stuff
break;
case AUDIO:
//Do audio stuff
break;
default:
break;
}
}

这就是你使用它的方式:

selectMedia(Media.IMAGE);

Oracle文档中也有类似的示例。

您可能希望在代码中的某个位置创建一个EnumMap,将Media_source作为键,将扩展的Set<String>作为值。然后使用该映射检索介质类型的适当扩展

最新更新