Выражения оператора переключения Apex могут быть одного из следующих типов.
- Целое число
- Длинная
- sОбъект
- Нить
- перечисление
- Пример одного значения
switch on i { when 2 { System.debug('when block 2'); } when -3 { System.debug('when block -3'); } when else { System.debug('default'); } }
2. Пример нулевого значения
switch on i { when 2 { System.debug('when block 2'); } when null { System.debug('bad integer'); } when else { System.debug('default ' + i); } }
3. Примеры нескольких значений
switch on i { when 2, 3, 4 { System.debug('when block 2 and 3 and 4'); } when 5, 6 { System.debug('when block 5 and 6'); } when 7 { System.debug('when block 7'); } when else { System.debug('default'); } }
4. Пример метода
switch on someInteger(i) { when 2 { System.debug('when block 2'); } when 3 { System.debug('when block 3'); } when else { System.debug('default'); } }
5. Пример с sObjects
if (sobject instanceof Account) { Account a = (Account) sobject; System.debug('account ' + a); } else if (sobject instanceof Contact) { Contact c = (Contact) sobject; System.debug('contact ' + a); } else { System.debug('default'); } //You can replace and simplify this code with the following switch statement. switch on sobject { when Account a { System.debug('account ' + a); } when Contact c { System.debug('contact ' + c); } when null { System.debug('null'); } when else { System.debug('default'); } }
6. Пример с перечислениями
switch on season { when WINTER { System.debug('boots'); } when SPRING, SUMMER { System.debug('sandals'); } when else { System.debug('none of the above'); } }
Источник:
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_switch.htm