Дэн Куилл, инженер-программист
Apex по большей части представляет собой упрощенную версию Java. Однако у него есть несколько особенностей и недокументированных «функций», которые мы попытаемся изучить в этой статье.
Карты используют ключи с учетом регистра… в основном
Как правило, Ключи карты в Apex чувствительны к регистру. Однако из этого правила есть несколько исключений! Глобальные карты описания и последующие карты полей нечувствительны к регистру:
Клонированные объекты SObject не соблюдают десятичную точность
Глубокое клонирование списка обрезает конечные нули из десятичных значений в нем.
Эквивалентные десятичные дроби не всегда считаются равными
Два эквивалентных десятичных числа с разным уровнем точности считаются равными. Однако два списка или SObject, содержащие такие десятичные знаки, не являются таковыми!
Это можно обойти, создав собственные методы areListsEqual и areSObjectsEqual, которые явно проверяют равенство между каждой парой элементов или полей соответственно.
Наборы не могут быть разыграны
Списки и наборы ведут себя совершенно по-разному, когда речь идет об обобщениях.
Более подробную информацию можно найти в этом ответе StackOverflow
Пробелы ИМЕЮТ значение
В отличие от Java, пробелы иногда могут вызывать ошибки компиляции.
Кажется, что имя внутреннего класса нельзя отделить от содержащего его класса; System.HttpRequest рассматривается как один токен.
Спасибо, что прочитали… и пусть вы никогда не наткнетесь на собственную странность Apex!