因此,当我使用一些 API 时,我发现它们可以通过 ex: 返回一些整数,Settings.MAIN_SCREEN
并且可能会返回1
. 我假设它Settings
是一个枚举,但我不知道如何从枚举构造函数返回一个变量。我能做的就是Settings.MAIN_SCREEN.getId()
如果有人知道如何做到这一点,请分享
枚举不能“成为”或“返回”整数类型。
在 Java 有枚举之前,有一个通用的约定是让接口充满命名常量。那些可以有任何类型。
另一方面,枚举是对象,正如您所指出的,您必须有一个访问器才能将整数值与一个相关联。
请提供您正在使用的 API 的实际示例(例如指向他们的 JavaDoc 的链接)。
从您写的内容来看,我认为这Settings.MAIN_SCREEN
实际上不是枚举,而是常数,仅此而已:
public class Settings {
public static final int MAIN_SCREEN = 1;
}
现有的答案是正确的;正如他们都说的那样,您看到的可能不是枚举,而实际上是某个对象中的常量静态值。不管怎样,我想我也可以添加一些可能有帮助的东西。枚举类似于对象,因为它们可以具有构造函数和成员字段,但是构造函数不能被外部访问。查看文档以获取更多信息。
要假设地回答您的问题,您可以执行以下操作:
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.
据我所知,如果不使用这种方法,就无法直接从枚举中获取整数值,因为枚举本身是在内部维护的。您可以将枚举的名称作为字符串 ( getName()
) 获取。如果您提到的此设置内容来自对您不开放的第三方 api,那么您可能就在这个小溪上。