-5

因此,当我使用一些 API 时,我发现它们可以通过 ex: 返回一些整数,Settings.MAIN_SCREEN并且可能会返回1. 我假设它Settings是一个枚举,但我不知道如何从枚举构造函数返回一个变量。我能做的就是Settings.MAIN_SCREEN.getId()

如果有人知道如何做到这一点,请分享

4

3 回答 3

2

枚举不能“成为”或“返回”整数类型。

在 Java 有枚举之前,有一个通用的约定是让接口充满命名常量。那些可以有任何类型。

另一方面,枚举是对象,正如您所指出的,您必须有一个访问器才能将整数值与一个相关联。

于 2012-12-09T03:12:17.377 回答
1

请提供您正在使用的 API 的实际示例(例如指向他们的 JavaDoc 的链接)。

从您写的内容来看,我认为这Settings.MAIN_SCREEN实际上不是枚举,而是常数,仅此而已:

public class Settings {
    public static final int MAIN_SCREEN = 1;
}
于 2012-12-09T03:13:57.823 回答
0

现有的答案是正确的;正如他们都说的那样,您看到的可能不是枚举,而实际上是某个对象中的常量静态值。不管怎样,我想我也可以添加一些可能有帮助的东西。枚举类似于对象,因为它们可以具有构造函数和成员字段,但是构造函数不能被外部访问。查看文档以获取更多信息。

要假设地回答您的问题,您可以执行以下操作:

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,那么您可能就在这个小溪上。

于 2012-12-09T04:10:41.073 回答