When crafting highly adaptable code, there are instances where we aim to steer clear of embedding picklist values directly and instead retrieve them dynamically from the field in real-time.
The following code snippet requires two parameters: the Object and the picklist field name. With these inputs, we can retrieve either the Picklist label or the Picklist value (API Name).
String objectName = 'Contact'; String fieldName ='LeadSource'; Schema.SObjectType s = Schema.getGlobalDescribe().get(objectName) ; Schema.DescribeSObjectResult r = s.getDescribe() ; Map<String,Schema.SObjectField> fields = r.fields.getMap() ; Schema.DescribeFieldResult fieldResult = fields.get(fieldName).getDescribe(); List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues(); for( Schema.PicklistEntry pickListVal : ple){ System.debug(pickListVal.getLabel() +' '+pickListVal.getValue()); }