Прошу прощения - может я и не совсем "по адресу" со своим Apex-вопросом, но уж очень здорово и доходчиво тут объясняются Java-сложности для новичков. А Apex, грубо говоря - разновидность Java'ы, сдобренная специализированными классами.
Есть маленький рабочий Apex-код. Помогите понять в нём 2 момента:
1) как (почему) срабатывают строки, расположенные ниже команды return - ведь она не обрамлена if-оператором?
2) как срабатывает new-команда создания некоторого класса, если она вызывается ВНУТРИ декларации этого же самого класса?
Прилагаю код и картинки для наглядности.
global class SM016_convertLeadsBatch implements Database.Batchable<sObject>,Schedulable
{global Database.QueryLocator start(Database.BatchableContext BC)
{//готовим запрос, который ищет неотконвертированные лиды по аккаунтам-кастомерам
string sQuery = 'select id from lead where isconverted = false AND Found_Account__r.Customer__c = \'Yes\'';
return Database.getQueryLocator(sQuery);
}
global void execute(SchedulableContext c)
{//метод интерфейса Schedulable который запускает выполняет джоб по расписанию. в данном случае по расписанию мы выполняем Database.Batchable SM016_convertLeadsBatch
database.executeBatch(new SM016_convertLeadsBatch(),1);
}
global void execute(Database.BatchableContext BC, List<sobject> lRec)
{set<id> sid = new set<id>();
for(sobject obj:lRec)
{lead acc = (lead)obj;
sid.add(acc.id); // собираем id-шники найденых записей лидов
}
SM001_LeadConvert.convertLeads(sid);//конвертируем лиды
}
global void finish(Database.BatchableContext BC)
{}
}