Beez..

12

鉴于:

public enum PersonType {

COOL_GUY(1),

JERK(2);

private final int typeId;

private PersonType(int typeId) {

this.typeId = typeId;

}

public final int getTypeId() {

return typeId;

}

public static PersonType findByTypeId(int typeId) {

for (PersonType type : values()) {

if (type.typeId == typeId) {

return type;

}

}

return null;

}

}

对我来说,这通常与数据库中的查找表一致(仅适用于很少更新的表).

但是,当我尝试findByTypeId在switch语句中使用时(很可能是用户输入)......

int userInput = 3;

PersonType personType = PersonType.findByTypeId(userInput);

switch(personType) {

case COOL_GUY:

// Do things only a cool guy would do.

break;

case JERK:

// Push back. Don't enable him.

break;

default:

// I don't know or care what to do with this mess.

}

......正如其他人所说,这导致了NPE @ switch(personType) {.我开始实现的一种解决方法(即"解决方案")是添加一种UNKNOWN(-1)类型.

public enum PersonType {

UNKNOWN(-1),

COOL_GUY(1),

JERK(2);

...

public static PersonType findByTypeId(int id) {

...

return UNKNOWN;

}

}

现在,您不必在重要位置进行空值检查,您可以选择或不选择处理UNKNOWN类型.(注意:-1在业务场景中是一个不太可能的标识符,但显然选择对您的用例有意义的东西).

`UNKNOWN`是我见过的最好的解决方案,并且过度使用了nullchecks. (2认同)

java switch case null_如何在switch中使用null相关推荐

  1. c语言中的null_如何在C中使用NULL

    c语言中的null Several programming languages make use of the concept of null. 几种编程语言都使用null的概念. Go has ni ...

  2. php switch case in,如何在PHP中使用switch case'或'?

    请尝试本文中的以下示例:[http://phpswitch.com/] 可能的开关案例: (一世). 一个简单的switch语句 切换声明是神奇而神奇的. 它是一种语言,允许您在值的不同选项之间进行选 ...

  3. java switch case 跳转_Java switch case语句

    1.switch case 语句有如下规则: switch 语句中的变量类型可以是: byte.short.int 或者 char.从 Java SE 7 开始,switch 支持字符串 String ...

  4. c语言 switch case 字符串,c语言switch case用法详解

    c语言switchcase用法详解 switch是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch是多分支选择语句.说得通俗点,多分支就 ...

  5. 如何用java创建超链接_Java如何在PPT中的幻灯片上创建超链接?

    在Java编程中,如何在PPT中的幻灯片上创建超链接? 注意:需要访问网址:http://poi.apache.org/download.html , 下载一个Apache POI软件包.这里下载最新 ...

  6. MySQL中使用CASE出错,如何在MySQL中正确使用CASE..WHEN

    如何在MySQL中正确使用CASE..WHEN 这里是一个演示查询,注意它非常简单,仅在base_price为0的位置获取,并且仍然select条件3: SELECT CASE course_enro ...

  7. java for 下标_Java如何在 Word 中设置上、下标

    上标是指比同一行中其他文字稍高的文字,而下标是指比同一行中其他文字稍低的文字.在生活中,我们常见的平方米.立方米等符号以及化学中的各种元素符号,都是利用上.下标来表示的.本文将介绍通过Free Spi ...

  8. java jcombobox长度_如何在JToolBar中设定JComboBox的大小?

    如何在JToolBar中设定JComboBox的大小? 我设计了一个JToolBar,并且在上边添加了一个JComboBox,可是我发现这个JComboBox长度无法控制,它将JToolBar上剩余空 ...

  9. java+script+当前日期_如何在JavaScript中获取当前日期?

    如何在JavaScript中获取当前日期? #1楼 您可以使用扩展了 Date对象的Date.js库,从而可以使用.today()方法. #2楼 如果您想对日期格式进行更多的粒度控制,我强烈建议您查看 ...

最新文章

  1. 有人从英伟达借了台DGX A100,让神经网络自己造了个GTA5自己玩
  2. 构建线性模型(Lasso)并通过系数(coefficients)可视化分析特征重要度
  3. 2019年「自然语言处理NLP」的“高光时刻” --- 28篇标志性论文
  4. 可微偏导数一定存在_【导数压轴题】“偏导数”与含参不等式
  5. boost::random模块实现允许直观地检查分布函数的结果的测试程序
  6. DCMTK:OFpath和相关内容的测试程序
  7. unittest所有断言方法
  8. 计算机科学创新大赛,计信学院举办第六届科技创新小发明大赛
  9. 使用MesaSQLite入库CSV文件
  10. 小C语言程序----词法分析程序输出单词
  11. Peeking inside LuaJIT(窥探LuaJIT)
  12. 计算机台式机怎么用无限,台式机如何无线上网 台式机实现无线上网的教程【图文】-太平洋电脑网PConline-太平洋电脑网...
  13. ImportError: No module named osgeo解决办法
  14. 学习笔记 02:关于在某宝上面购买的stm32f103c8t6最小系统开发板如何使用USBtoTTL模块烧录程序的记录
  15. 首次授权中国区独立维修商,高冷的苹果也为“五斗米“折腰?
  16. 售后支持领域的服务指标
  17. Linux下hosts文件详解
  18. C++操作windows剪贴板数据(含文件复制)
  19. SSH便利店管理系统
  20. 【面试笔试-c/c++】兰亭集势2013校园招聘试题。

热门文章

  1. 2021年中国5G手机发展现状及市场竞争格局分析:华为持续领跑国内5G手机市场[图]
  2. Ubuntu下连接红米2无法找到设备解决方案
  3. 计算机报名照片最小像素高宽,网上报名照片如何确定大小
  4. 计算机考试不在学籍库,有消息!中考报名将由学籍库直接导入,取消学校考试排名........
  5. Unity UGUI 代码改变遮挡层级
  6. vue页面详情页返回列表页_vue 详情页返回列表页,保留列表页之前的筛选条件...
  7. Smartforms 总计小计
  8. 关于java中的魔幻数字47你知道么
  9. MATLAB浮点数详解
  10. 从爆款单品到全屋智能 Aqara如何引领行业变革