簡體   English   中英

在枚舉中引用枚舉

[英]Refer enum inside an enum

如果,

enum Things{
   UNIQUE_THING,
   NON_UNIQUE_THINGS; // Need to specify what n0n-unique things as a separate enum
}

enum NonUniqueThings {
   THING_1,
   THING_2;
}

有什么方法可以僅引用一個枚舉Things並在其中指定NonUniqueThings的行為嗎? 我的意思是,來電者可以撥打-

Things.UNIQUE_THING 

要么

Things.NON_UNIQUE_THING.THING_1

有什么想法嗎?

您可以為包含一些NonUniqueThings值的Things引入可為空的參數。 當然,為了獲取NonUniqueThings值,您必須提供Things的構造函數以及param的getter。

請注意,我假設UNIQUE_THING不會綁定到某些NonUniqueThing ,這就是為什么使用null作為參數實例化的原因。

enum Things{
   UNIQUE_THING(null),
   NON_UNIQUE_THINGS(NonUniqueThings.THING_1);

   NonUniqueThings param;

   Things(NonUniqueThings param) {
       this.param = param;
   }

   public NonUniqueThing getNonUniqueThing() {
       return param;
   }
}

然后,您可以獲取綁定到每個Things值的NonUniqueThings值,如下所示:

NonUniqueThings nonUniqueThing = Things.NON_UNIQUE_THING.getNonUniqueThing();

這樣的東西? 沒有真正好的解決方案,它應該工作。

enum Things {
        UNIQUE_THING,
        NON_UNIQUE_THING(
            NonUniqueThings.A,
            NonUniqueThings.C);

    public final Child[] childs;

    private Things() {
        this.childs = null;
    }

    private Things(Child... childs) {
        this.childs = childs;
    }
}

interface Child {
    //
}

enum NonUniqueThings implements Child {
    A,
    B,
    C;
}

您可以去這里(如果我正確理解了您的需求):

public enum Things {
    UNIQUE_THING, NON_UNIQUE_THINGS;

    public enum NonUniqueThings {
        THING_1, THING_2;
    }
}

可以像這樣訪問:

Things.NonUniqueThings.THING_1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM