-5

そのため、いくつかの API を使用するSettings.MAIN_SCREENと、ex: によっていくつかの int を返すことができ、それが返される可能性があることがわかります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 に答える