Java 解決Enum.valueOf找不到枚舉出現的異常


由於Enum.valueOf匹配不到枚舉時會出現異常,這個可以用try...catch來解決,但是這樣會導致代碼往臃腫的道路上越走越遠。
本文與其說是解決Enum.valueOf找不到枚舉出現的異常還不如說是換了解決方案:
現在有這么一個枚舉

/**
 * 類型操作接口
 */
public interface TypeEnum {
  Boolean ret(); // 表示是某個類型時返回結果
}

public enum ImageEnumImpl implements TypeEnum {
  /**
   * jpeg類型的圖片
   */
  JPEG {
    @Override
    public Boolean ret() {
      return true;
    }
  },
  /**
   * jpg類型的圖片
   */
  JPG {
    @Override
    public Boolean ret() {
      return true;
    }
  },
  /**
   * gif類型的圖片
   */
  GIF {
    @Override
    public Boolean ret() {
      return true;
    }
  },
  /**
   * bmp類型的圖片
   */
  BMP {
    @Override
    public Boolean ret() {
      return true;
    }
  },
  /**
   * png類型的圖片
   */
  PNG {
    @Override
    public Boolean ret() {
      return true;
    }
  },

}

服務端需要通過枚舉來判斷支持上傳的文件類型,可以使用Enum.valueOf來判斷,而且很香

 if (ImageEnumImpl.valueOf(exhibitionName).ret()){}

但是如果枚舉類中並不存在這個類型就會拋出一個異常,導致無法用if的方式來判斷,可以使用以下代碼來操作,當枚舉不存在時返回null

 private ImageEnumImpl getIfPresent(String name) {
    return Enums.getIfPresent(ImageEnumImpl.class, name).orNull();
 }

使用這個方法,這樣代碼就好看多了

if (getIfPresent(exhibitionName) == null) {
    return AjaxResult.error(400, "請上傳正確的圖片文件,如:jpg、png、bmp、gif!");
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM