我几乎完成了我在android中为我的应用程序处理的一个计算活动。我尝试创建一个性别枚举,但由于某种原因得到语法错误,插入"EnumBody“以完成EnumDeclaration。
public static enum Gender
{
static
{
Female = new Gender("Female", 1);
Gender[] arrayOfGender = new Gender[2];
arrayOfGender[0] = Male;
arrayOfGender[1] = Female;
ENUM$VALUES = arrayOfGender;
}
}
我也尝试过不使用static {},但我得到了相同的语法错误。
发布于 2012-02-12 14:34:02
你到底是在哪里找到这个语法的?Java枚举非常简单,您只需指定值。
public enum Gender {
MALE,
FEMALE
}
如果你想让它们变得更复杂,你可以像这样给它们添加值。
public enum Gender {
MALE("Male", 0),
FEMALE("Female", 1);
private String stringValue;
private int intValue;
private Gender(String toString, int value) {
stringValue = toString;
intValue = value;
}
@Override
public String toString() {
return stringValue;
}
}
然后,要使用枚举,您可以执行如下操作:
Gender me = Gender.MALE
发布于 2014-10-03 16:06:21
围绕这一点存在一些争论,但即使在最新的文档中,android也认为在android应用程序中使用枚举并不是一个好主意。原因是它们比静态常量变量占用更多的内存。这是2014年的一篇文档,建议不要在android应用程序中使用枚举。http://developer.android.com/training/articles/memory.html#Overhead
我引述如下:
注意内存开销
了解你正在使用的语言和库的成本和开销,并在设计应用程序时从头到尾记住这些信息。通常,表面上看起来无害的东西实际上可能有大量的开销。示例包括:
这里或那里的几个字节很快就会累积起来--类或对象繁重的应用程序设计将受到这种开销的影响。这可能会让您在查看堆分析时陷入困境,并意识到您的问题是许多小对象占用了您的RAM。
有一些地方他们说这些建议已经过时了,不再有价值,但他们不断重复的原因,一定是有一定的道理。编写android应用程序应该尽可能保持轻量级,以获得流畅的用户体验。每一寸性能都很重要!
发布于 2015-03-27 02:25:46
正如Chris评论的那样,枚举在Android上需要更多的内存,随着它们在任何地方的使用,这些内存都会增加。您应该尝试使用IntDef或StringDef,它们使用注释,以便编译器验证传递的值。
public abstract class ActionBar {
...
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
@Retention(RetentionPolicy.SOURCE)
public @interface NavigationMode {}
public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;
@NavigationMode
public abstract int getNavigationMode();
public abstract void setNavigationMode(@NavigationMode int mode);
它还可以用作标志,允许二进制组合(OR / AND操作)。
编辑:似乎将枚举转换为It是one of the default optimizations in Proguard。
https://stackoverflow.com/questions/9246934
复制相似问题