java equal switch_java8中switch(String)的错误解决

博主在JDK1.8中使用switch(String)格式代码报错,原在JDK1.7中可支持。博主不想更换JDK,根据提示尝试用枚举解决,定义枚举后修改代码,程序得以正确编译。

今敲着代遇到错误,因为以前用的是jdk1.7,这种switch(String)格式是可以支持的,但是在jdk1.8中却不行,思考之后摸索出解决办法

以下是我报错的代码一段:

private boolean checkName(String fileName, String name, String op) {

switch (op) { --->在这里提示我要改用jdk1.7

case "no":// 不用检查

return true;

case "contains":// 是否包含,包含返回true

return fileName.contains(name) ? true : false;

case "equals": // 是否相等,相等返回true

return fileName.equals(name) ? true : false;

case "noequal": // 是否不相等,不相等返回true

return fileName.equals(name) ? false : true;

default:

log.info("wrong op:{}", op);

break;

}

return false;

}

我怎么可能会去换jdk呢,于是看着提示说是利用枚举可以解决,我就试了下,一下是我代码:

//定义枚举

enum op{no, contains, equals, noequal}

@Service

public class HdfsService {

.......省略类中的其他方法了,这里就不写了

private boolean checkName(String fileName, String name, op p) {

op c = null;

switch (c) {

case no: //不用检查

return true;

case contains: //是否包含,包含返回true

return fileName.contains(name) ? true : false;

case equals: //是否相等,相等返回true

return fileName.equals(name) ? true : false;

case noequal: //是否不相等,不相等返回true

return fileName.equals(name) ? false : true;

default:

log.info("wrong op:{}", p);

break;

}

return false;

}

}

这样这个程序就能正确编译了,谢谢,不足可以提出来讨论

这是uilib中一些使用了dal_ado_t结构体的函数 int uilibL2PortMibPktAndOctetDataGet(user_port up, STAT_L2PORT_UTILIZATION_S *portUtilData) { APPL_ENSURE_RET((NULL != portUtilData)); int ret = ERR_NO_ERROR; user_port_list uplist = {}; dal_ado_t *adoi = NULL; void *handler = NULL; adoi = dalAdoiCreate(DMP_DEV_NAME_SWITCHMAC, DAL_MOD_PORT, DAL_CFG_TYPE_ENTRY); APPL_ENSURE_DONE(ret, adoi, ERR_NO_MEMORY); PFM_IF_FAIL_DONE_RET(ret, uplist_init(&uplist), ERR_NO_MEMORY); UP_LIST_ADD(&uplist, up); APPL_IF_ERR_DONE(ret, uilibL2PortMibDalGet(adoi, uplist)); if (NULL != (handler = DAL_ADOI_ENTRY(adoi, DAL_PORT_K_MIB))) { DAL_ADOI_ENTRY_LOOP(handler) { char *key = NULL; user_port up_in_TPSTATE_ITER_KEY_NEW; L2_NOTEQUAL_CONTINUE(0, NULL == (key = DAL_ADOI_ENTRY_KEY(handler)) || !DAL_ADOI_ENTRY_KEY_MATCH(handler, DAL_PORT_K_MIB_ALL)); DAL_PORT_KEY_MIB_PARSE_TO_UP(key, up_in_TPSTATE_ITER_KEY_NEW); if(!UP_IS_VALID(up_in_TPSTATE_ITER_KEY_NEW)) { continue; } if(UP_INDEX(up_in_TPSTATE_ITER_KEY_NEW) != UP_INDEX(up)) { continue; } /* KEY inner field&value loop */ if (DAL_ADOI_ENTRY_KEY_EMPTY(handler)) { DBG("Invalid operation: deleting Fixed entries!"); } else { DAL_ADOI_ENTRY_FIELD_LOOP(handler, key) { if (DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_PORT_K_MIB_F_RXPKTS)) { L2_NOTEQUAL_DONE_RETVAL(PFM_ERR_C_OK, dalAdoiGetEntryUI64(adoi, DAL_PORT_K_MIB, &portUtilData->rxPkts), ret, ERR_PORT_EXEC_TPDAL); } else if (DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_PORT_K_MIB_F_RXOCTETS)) { L2_NOTEQUAL_DONE_RETVAL(PFM_ERR_C_OK, dalAdoiGetEntryUI64(adoi, DAL_PORT_K_MIB, &portUtilData->rxOctets), ret, ERR_PORT_EXEC_TPDAL); } else if (DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_PORT_K_MIB_F_TXPKTS)) { L2_NOTEQUAL_DONE_RETVAL(PFM_ERR_C_OK, dalAdoiGetEntryUI64(adoi, DAL_PORT_K_MIB, &portUtilData->txPkts), ret, ERR_PORT_EXEC_TPDAL); } else if (DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_PORT_K_MIB_F_TXOCTETS)) { L2_NOTEQUAL_DONE_RETVAL(PFM_ERR_C_OK, dalAdoiGetEntryUI64(adoi, DAL_PORT_K_MIB, &portUtilData->txOctets), ret, ERR_PORT_EXEC_TPDAL); } } } } } ret = ERR_NO_ERROR; done: if(!uplist_is_null(&uplist)) { uplist_free(&uplist); } if(adoi) { dalAdoiDestroy(adoi); } return ret; } 我要你修改的是下面这个函数获取数据的方式,尽量不要新增函数,使用uilib提供的接口完成 int swStatisticGetHandle(UI_CTX *ctx) { GR_PRINT_INFO("Enter swStatisticGetHandle"); int ret = ERR_NO_ERROR; /* 返回响应数据 */ JSON_Value *rspVal = json_value_init_object(); JSON_Object *rspObj = json_value_get_object(rspVal); JSON_Value *retVal = json_value_init_array(); JSON_Array *retArray = json_value_get_array(retVal); char port_str[20]; char rx_ucPkts_str[20]; char rx_mcPkts_str[20]; char rx_bcPkts_str[20]; char rx_pausePkts_str[20]; char rx_allBytes_str[20]; char rx_littPkts_str[20]; char rx_normPkts_str[20]; char rx_bigPkts_str[20]; char tx_ucPkts_str[20]; char tx_mcPkts_str[20]; char tx_bcPkts_str[20]; char tx_pausePkts_str[20]; char tx_allBytes_str[20]; TPSTATE_GET_INFO stGetMibInfo = {}; stGetMibInfo.pGetObj = tpState_objCreate(); if (NULL == stGetMibInfo.pGetObj) { GR_PRINT_ERROR("no memory"); return ERR_NO_MEMORY; } ret = uilibL2PortMibGetAll(&stGetMibInfo); TPSTATE_ITER_KEY_NEW(&stGetMibInfo.iterName) { user_port up = {}; int upIdx = 0; char *pkey = TPSTATE_GET_KEY(&stGetMibInfo.iterName); STAT_PORT_K_MIB_PARSE_TO_UP(pkey, up); UP_TO_IDX(up, upIdx); UINT64 pktNum = 0; // GR_PRINT_INFO("pKey: %s, upIdx: %d, INNER_UP_PORT_MAX: %d", pkey, upIdx, INNER_UP_PORT_MAX); if ((!UP_IS_PHY_PORT(up)) && (!UP_IS_USB_PORT(up)) && (upIdx < INNER_UP_PORT_MAX) && (upIdx > 0)) { sprintf(port_str, "%d", upIdx); TPSTATE_ITER_FV_NEW(&stGetMibInfo.iterName) { if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXUNICASTPKTS)) { sprintf(rx_ucPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXMULTICASTPKTS)) { sprintf(rx_mcPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXBROADCASTPKTS)) { sprintf(rx_bcPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXPAUSE)) { sprintf(rx_pausePkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXOCTETS)) { sprintf(rx_allBytes_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXUNDERSIZEPKTS)) { sprintf(rx_littPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXGOODPKTS)) { sprintf(rx_normPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXOVERSIZEPKTS)) { sprintf(rx_bigPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_TXUNICASTPKTS)) { sprintf(tx_ucPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_TXMULTICASTPKTS)) { sprintf(tx_mcPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_TXBROADCASTPKTS)) { sprintf(tx_bcPkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_RXPAUSE)) { sprintf(tx_pausePkts_str, "%llu", pktNum); } if (PFM_ERR_C_OK == tpState_iterGetNumU64(&stGetMibInfo.iterName, &pktNum, pkey, STAT_PORT_K_MIB_F_TXOCTETS)) { sprintf(tx_allBytes_str, "%llu", pktNum); } } JSON_Value *portMibVal = json_value_init_object(); JSON_Object *portMibObj = json_value_get_object(portMibVal); json_object_set_string(portMibObj, RSP_SWITCH_MIB_PORT, port_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_UNICAST, rx_ucPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_MULTI, rx_mcPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_BROAD, rx_bcPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_PAUSE, rx_pausePkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_ALL, rx_allBytes_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_LITTE, rx_littPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_NORMAL, rx_normPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_RX_BIG, rx_bigPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_TX_UNICAST, tx_ucPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_TX_MULTI, tx_mcPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_TX_BROAD, tx_bcPkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_TX_PAUSE, tx_pausePkts_str); json_object_set_string(portMibObj, RSP_SWITCH_MIB_TX_ALL, tx_allBytes_str); json_array_append_value(retArray, portMibVal); } } json_object_set_number(rspObj, SWITCH_RSP_ID, 1); json_object_set_string(rspObj, SWITCH_RSP_ERRCODE, "0"); json_object_set_value(rspObj, SWITCH_RSP_RESULT, retVal); ctx->rsp = rspVal; GR_PRINT_INFO("FINISH RSP swStatisticGetHandle"); return ERR_NO_ERROR; }
最新发布
12-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值