第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 最佳實踐靜態(tài)最終映射值

Java 最佳實踐靜態(tài)最終映射值

慕妹3146593 2022-12-21 12:01:59
我有一個實用程序類,其中包含一個帶有一些值的靜態(tài)最終映射。我需要在另一個班級訪問這張地圖。我應(yīng)該只將地圖聲明為公共的,還是應(yīng)該在實用程序類中編寫一個 getter,從而讓地圖成為私有的?兩種方式都有效,但最佳做法是什么?public MyUtilityClass {  public static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(      "title", 256,      "text", 512);}public MyAnotherClass {  public void someMethod() {    //accessing the map directly    MAX_LENGTHS.get("title")  }}要么public MyUtilityClass {  private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(      "title", 256,      "text", 512);  public static final getMaxLengthMap() {return MAX_LENGTHS;}}public MyAnotherClass {  public void someMethod() {    //accessing the map directly    getMaxLengthMap().get("title")  }}好吧,實際上鍵是枚舉值。就像是 :private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(      MyEnumClass.TITLE, 256,      MyEnumClass.TEXT, 512);
查看完整描述

5 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗 獲得超7個贊

吸氣劑不添加任何東西 - 我只是將其公開。


可能有意義的是有一個直接返回值的方法:


public MyUtilityClass {

  private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(

      "title", 256,

      "text", 512);


  public static final getMaxLength(String item) {return MAX_LENGTHS.get(item);}

}


public MyAnotherClass {

  public void someMethod() {

    //accessing the map directly

    getMaxLength("title");

  }

}

這還允許您稍后輕松修改底層實現(xiàn)。例如,您可以為不在地圖中的項目返回默認(rèn)值等。


查看完整回答
反對 回復(fù) 2022-12-21
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗 獲得超18個贊

您正在使用ImmutableMap項目guava;因此是一個真正的不可變Map.

讓它public不會傷害任何人——因為沒有人能Map以任何方式真正改變它。


查看完整回答
反對 回復(fù) 2022-12-21
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊

我不得不說,您可能最好還是Enum首先使用 an 。由于此映射似乎總是完全靜態(tài)的:


public enum MaxLength {

    TITLE(256),

    TEXT(512);


    public final int value;


    MaxLength(int value) {

        this.value= value;

    }

}

不再需要該實用程序類,您現(xiàn)在可以直接獲取值:


int length = MaxLength.TITLE.value;


查看完整回答
反對 回復(fù) 2022-12-21
?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗 獲得超8個贊

這取決于您需要對地圖做什么。允許直接訪問地圖(因此將其設(shè)置為公開),將使任何人都可以不受任何限制地使用和修改該地圖。

在您的情況下,地圖是最終的且不可變的,因此這不適用。

但是,如果您只想限制對其某些內(nèi)容的訪問,例如title,那么正確的選擇是創(chuàng)建一個僅返回String.

將地圖設(shè)置為公開,或創(chuàng)建一個返回整個地圖的方法都沒有區(qū)別。


查看完整回答
反對 回復(fù) 2022-12-21
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊

我認(rèn)為向擁有類添加吸氣劑是可行的方法。


public MyUtilityClass {

  private static final Map<String, Integer> MAX_LENGTHS = ImmutableMap.of(

      "title", 256,

      "text", 512);


  public static int getLength(final String key) {

     return MAX_LENGTHS.get(key);

  }

}


public MyAnotherClass {

  public void someMethod() {


    int x= MyUtilityClass.getLength("title")

  }

}

這MyAnotherClass避免了需要了解 getter 的任何實現(xiàn)細(xì)節(jié),并使測試模擬變得更加容易。


查看完整回答
反對 回復(fù) 2022-12-21
  • 5 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號