因此,当我使用某些API时,我发现他们可以通过ex:Settings.MAIN_SCREEN
返回一些整数,这可能会返回1
。我假设Settings
是一个枚举,但我无法弄清楚如何从Enum构造函数返回一个变量。我所能做的就是Settings.MAIN_SCREEN.getId()
如果有人知道该怎么做,请分享
答案 0 :(得分:2)
枚举不能“成为”或“返回”整数类型。
在Java有枚举之前,有一个常见的约定,即使接口充满命名常量。那些可以有任何类型。
另一方面,枚举是对象,你必须有一个存取器,如你所知,将一个整数值与一个值相关联。
答案 1 :(得分:1)
请提供您正在使用的API的实际示例(例如,指向其JavaDoc的链接)。
根据你的写作,我认为Settings.MAIN_SCREEN
实际上不是一个枚举,而是一个常数,仅此而已:
public class Settings {
public static final int MAIN_SCREEN = 1;
}
答案 2 :(得分:0)
现有的答案是正确的;正如他们所说的那样,你所看到的可能不是一个枚举,但事实上在某个对象中是一个恒定的静态值。无论我以为我可能会添加其他可能有用的东西。枚举类似于对象,因为它们可以具有构造函数和成员字段,但是无法从外部访问构造函数。 Check out the documentation for more info.
要假设地回答你的问题,你可以这样做:
public enum Settings{
MAIN_SCREEN(1) // internally invoking this enum's constructor, passing the value 1.
private int id;
private Settings(int id){
this.id= id;
}
public int getId(){
return this.id;
}
}
在代码的某处,您可以这样做:
Settings.MAIN_SCREEN.getId() // this will return the value 1, as specified in the enumeration.
据我所知,没有使用此方法直接从枚举中获取整数值,因为枚举本身是在内部维护的。您可以将Enum的名称作为字符串(getName()
)获取。如果你提到的这个设置的东西来自一个对你不开心的第三方api,那么你可能就在这个上面了。