そんなにたくさんの列挙を見て本当に使ったの?

5422 ワード

卒業していないAndroidのクズとして、経験は限られていて、大学の間は多くの本を読んで、多くの新聞を読んで、多くのおやつを食べて、多くの本を読んで、本の上でいつもこの概念を列挙して、本の上で1山書いて、どのように使って、それを使ってどのように良いと言って、しかし、自分の書くプロジェクトはいつも使うのが少なくて、システムがそれを遮蔽したと言うべきで、まったく使いません(だからまだクズの段階にあります)
まず、なぜ使うのが少ないのか、同じクズのあなたはこのような感じがあるのではないでしょうか.自分の心は列挙がいいものだと認めていますが、書くときに使えないと思っています.どうして使えないのですか.種目は基本的に試合に参加するためか、学校の宿題を完成するために書かれているので、つまり書き終わった後、それは冷宮に閉じ込められ、さらに重要なのは一つの種目の編纂者が1-3人で、全局統一には何の概念もないようだ.もっと重要なのはバックグラウンドと協力して、どのように便利にどのように来ますか(あなたは知っています)、だから列挙は本を読む時必ず見て、コードする時使わない1つの概念の問題になりました.
こんなくだらないことを言ったら、どうやって私たちのような小さなスラグを上手に使うことができるか見てみましょう.
始まる前に紹介したいのはすべての本で、すべてのブログで言及されています.
  • 列挙クラスは特殊なクラスであり、通常のクラスと同様に、独自のメンバー変数、メンバーメソッド、コンストラクタがある(privateアクセス修飾子しか使用できないため、外部からコンストラクタを呼び出すことができず、コンストラクタは列挙値を構築するときにのみ呼び出される).Javaソースファイルには最大1つのpublicタイプの列挙クラスしかありません.Javaソースファイルの名前もその列挙クラスのクラス名と同じでなければなりません.これはクラスと同じです.
  • Javaでenumキーワードを使用して列挙クラスを定義し、その地位はclass、interfaceと同じである(すなわちクラスを構築し、classをenumに変換する).

  • 私はちょうど勉強を始めたような気がします.この2点の差は多くありません.
    まず使い方を学びましょう
    私は下に感情の列挙コードを貼り付けました.
     public enum EMOTIONAL {
            SECRECY(1, "  "), SINGLE(2, "  "), MARRIED(3, "  "), DIVORCE(4, "  ");
            private int code;
            private String value;
    
            private EMOTIONAL(int code, String value) {
                this.code = code;
                this.value = value;
            }
    
            public int getCode() {
                return code;
            }
    
            public static int getCode(String value) {
                for (EMOTIONAL emotional : values()) {
                    if (emotional.getValue().equals(value)) return emotional.getCode();
                }
                return -1;
            }
    
            public String getValue() {
                return value;
            }
    
            public static String getValue(int code) {
                for (EMOTIONAL emotional : values()) {
                    if (emotional.getCode() == code) return emotional.getValue();
                }
                return null;
            }
    
            @Override
            public String toString() {
                return value;
            }
        }
        
    

    初心者の子供は心の中で1万回も「草泥馬」を走ったことがあるかもしれません.焦らないで、お姉さんの説明を聞いてください.これは何ですか.
    まず
    public enum EMOTIONAL {
            SECRECY(1, "  "), SINGLE(2, "  "), MARRIED(3, "  "), DIVORCE(4, "  ");
           
            private int code;
            private String value;
    
            private EMOTIONAL(int code, String value) {
                this.code = code;
                this.value = value;
            }
     }
    
    

    このコードは1つの列挙クラスを定義してそして構造関数を実現して、クラス名はEMOTIONALで、こちらは主に2つのパラメータをして、これは必要に応じて決めて、主にバックグラウンドのあちらがあなたに過去の値を伝える必要があることを見て、もしバックグラウンドにデータを伝える必要がなければ、自分で次のように書くのも問題ありません.
    public enum EMOTIONAL {
            SECRECY("  "), SINGLE("  "), MARRIED("  "), DIVORCE("  ");
           
            private String value;
    
            private EMOTIONAL(String value) {
                this.value = value;
            }
     }
    
    
    public enum EMOTIONAL {
            SECRECY, SINGLE, MARRIED, DIVORCE;
     }
    
    

    必要に応じて、異なる列挙クラスを定義すると、次のような異なる機能が得られます.
     public static int getCode(String value) {
                for (EMOTIONAL emotional : values()) {
                    if (emotional.getValue().equals(value)) return emotional.getCode();
                }
                return -1;
            }
    
     public static String getValue(int code) {
                for (EMOTIONAL emotional : values()) {
                    if (emotional.getCode() == code) return emotional.getValue();
                }
                return null;
            }
    
    
    return -1を見て驚かないでください.彼はただの標識値です.
    以上の2つの方法は、あなたが必要とする対応値を得ることです.同じように、あなたのプロジェクトの必要に応じて異なります.
     @Override
            public String toString() {
                return value;
            }
    

    これはtoString()を書き換え、パラメータValueを返す値です.
    はい、列挙類はこれで基本的にいいです.
    どうやって使うの?それを使う必要があるときは . を使う必要があります.もし何か方法で何か値を得る必要があるなら、 . . を必要とします.
    じゃ、栗を挙げましょう.
    private void initData(){
    private List emotionList = new ArrayList();
     for(BaseUserInfo.EMOTIONAL emotion:BaseUserInfo.EMOTIONAL.values()){
                emotionList.add(emotion.toString());
        }
    }
    
    

    この出力は次のとおりです.
    [  ,  ,  ,  ]
    

    はい、そうです.このようなforeachサイクルが好きではありません.普通のものでもいいです.
    列挙クラスでよく使用されるメソッド
    基本的には、後で、いくつかの列挙クラスでよく使われる方法を紹介します.
    String toString():         (   ,                   )
    
    int ordinal():               ( 0  ),             ,                ;
    
    String name():           ,     ;
    
    static values():               ,           
    
    int compareTo(E o):                 ,                     。                 ,      ;       ;     (         )
    
    boolean equals()  :             
    
    

    もちろん、列挙クラスを使用してインタフェースを実装することもできます.
    public interface Emotion {
    
        public void info();
    
    }
    

    インタフェースを定義します.インタフェースにはinfo()メソッドがあり、インタフェースを実装するクラスであれば、そのメソッドを実装する必要があります.
    public enum Emotional implements Emotion {
        MALE,FEMALE;
        @Override
        public void info() {
            System.out.println("              ");
        }
    
    }
    

    次に呼び出す
    public class Test02 {
    
        public static void main(String[] args) {
            Gender.MALE.info();
            Gender.FEMALE.info();
        }
    
    }
    
    

    このブログはやっと书き终わりました.少年の皆さん、読んでくれてありがとう.
    参考記事