通常必須使用多個布爾選項來配置一個類。 Java中推薦的方法是指定執行配置?類配置中的Java布爾選項
我可以想出4種方法可以將選項傳遞給該類。
使用位掩碼。高效,易於使用,但不能組合在一起。通過其他成員之間的自動完成更難以找到。大小受限制。
public static final int A_ENABLED = 1 << 1; public static final int B_ENABLED = 1 << 2;
使用(內部)參數類。創造困難,過於冗長。
public static class Params { private final boolean enabledA; private final boolean enabledB; } public class MyFunctionality { private final SomeOtherArguments myDataArguments; ... private final Params params; MyFunctionality(SomeOtherArguments myDataArguments, Params params); }
使用布爾字段作爲類的一部分。增加類的詳細程度(構造函數中額外的參數,您不必擔心)。每次參數更改時,都必須修改類的構造函數。在2選項中,只有Params類會改變。
public class MyFunctionality { private final SomeOtherArguments myDataArguments; ... private final boolean enabledA; private final boolean enabledB; private final boolean enabledC; private final boolean enabledD; ... public MyFunctionality(SomeOtherArguments someOtherArguments, boolean enabledA, boolean enabledB, boolean enabledC, boolean enabledD); }
使用枚舉。
public static enum Params { OPTION_A, OPTION_B }
你能想出其他更好的方法來做到這一點?
它看起來是一個非常好的選擇,但是一個看起來比較好的位掩碼就是它們不那麼冗長。即你可以在一行寫| | B | C,但你會用EnumSet來做到這一點嗎? – Leonid
使用「的」。我編輯了答案來表明這一點。 – DJClayworth