Дэн Куилл, инженер-программист

Apex по большей части представляет собой упрощенную версию Java. Однако у него есть несколько особенностей и недокументированных «функций», которые мы попытаемся изучить в этой статье.

Карты используют ключи с учетом регистра… в основном

Как правило, Ключи карты в Apex чувствительны к регистру. Однако из этого правила есть несколько исключений! Глобальные карты описания и последующие карты полей нечувствительны к регистру:

Клонированные объекты SObject не соблюдают десятичную точность

Глубокое клонирование списка обрезает конечные нули из десятичных значений в нем.

Эквивалентные десятичные дроби не всегда считаются равными

Два эквивалентных десятичных числа с разным уровнем точности считаются равными. Однако два списка или SObject, содержащие такие десятичные знаки, не являются таковыми!

Это можно обойти, создав собственные методы areListsEqual и areSObjectsEqual, которые явно проверяют равенство между каждой парой элементов или полей соответственно.

Наборы не могут быть разыграны

Списки и наборы ведут себя совершенно по-разному, когда речь идет об обобщениях.

Более подробную информацию можно найти в этом ответе StackOverflow

Пробелы ИМЕЮТ значение

В отличие от Java, пробелы иногда могут вызывать ошибки компиляции.

Кажется, что имя внутреннего класса нельзя отделить от содержащего его класса; System.HttpRequest рассматривается как один токен.

Спасибо, что прочитали… и пусть вы никогда не наткнетесь на собственную странность Apex!