如何编写符合指定逻辑的Salesforce Apex IF条件判断语句?
Salesforce Apex 正确IF条件写法
需求回顾
当变量fineCategory满足以下任一条件时,执行break:
- 变量为
null或空字符串 - 变量的值不是
ValueA也不是ValueB(包括ValueC、ValueN等其他所有值)
正确代码实现
// 先处理null/空字符串,再判断是否不属于ValueA/ValueB if (String.isBlank(fineCategory) || (!fineCategory.equals('ValueA') && !fineCategory.equals('ValueB'))) { break; }
逻辑说明
String.isBlank(fineCategory):Apex内置方法,一次性判断变量是否为null、空字符串或仅包含空白字符,比单独判断null和''更简洁可靠。!fineCategory.equals('ValueA') && !fineCategory.equals('ValueB'):确保变量既不是ValueA也不是ValueB,不管是ValueC还是外部API返回的ValueN,都会满足这个条件。- 用
||连接两个条件:只要其中一个成立,就执行break。
常见错误分析
- 第一种写法失效:大概率是只判断了
!= 'ValueC'这类特定值,没有覆盖所有非A/B的情况,自然处理不了ValueN。 - 第二种括号错误:如果把条件写成
!(fineCategory.equals('ValueA') || fineCategory.equals('ValueB')),其实和!fineCategory.equals('ValueA') && !fineCategory.equals('ValueB')逻辑等价,但如果括号位置错写成(!fineCategory.equals('ValueA') || !fineCategory.equals('ValueB')),就会变成“不是A或者不是B”,这时候只要不是A就算成立,哪怕是B也会触发break,完全不符合需求。
内容的提问来源于stack exchange,提问作者ioSven
相关产品推荐
相关产品推荐

