Friday 16 September 2016

Outer class and Inner class in Salesforce (Deeper example for assigning and accessing values)

The below example will help you to understand the way of assigning and accessing outer class and inner class variables. 

Example Code:

  1. public class PersonalInformation {
  2.     public String studentRollNo;
  3.     public PersonalInfo personalDetails;

  4.     public class PersonalInfo{
  5.         public Name nameInfo;
  6.         public Address addressInfo;  
  7.         public Others otherInfo;  
  8.     }
  9.     public class Name{
  10.         public String firstName;
  11.         public String lastName;
  12.     }
  13.     public class Address{
  14.         public String addressLine1;
  15.         public String addressLine2;
  16.         public String addressLine3;
  17.     }
  18.     public class Others{
  19.         public Integer age;
  20.         public String nationality;
  21.     }
  22. }

  • PersonalInformation - Outer Class
  • Name Inner Class
  • Address Inner Class
  • Others - Inner Class
  • PersonalInfo - Inner Class(Act as a Container class)

This PersonalInfo class contains Name, Address and Others inner classes for easiest way of access.

Outer class contains the below two variables instances,

  • studentRollNo - String
  • personalDetails - PersonalInfo class instance to access all inner classes. 

How to assign and access values for PersonalInformation class(Including inner classes)?

  1. ////////////////////////// Assigning Values //////////////////////////////////////////
  2. //Initialize Outer Class.
  3. PersonalInformation personalInfo = new PersonalInformation();
  4.  
  5. //Fill Name class details
  6. PersonalInformation.Name nameCls =new PersonalInformation.Name();
  7. nameCls.firstName = 'Arunkumar';
  8. nameCls.lastName = 'R';
  9.  
  10. //Fill Address class details
  11. PersonalInformation.Address addressCls =new PersonalInformation.Address();
  12. addressCls.addressLine1 = 'Address 1';
  13. addressCls.addressLine2 = 'Address 2';
  14. addressCls.addressLine3 = 'Address 3';
  15.  
  16. //Fill Others class details
  17. PersonalInformation.Others othersCls =new PersonalInformation.Others();
  18. othersCls.age = 25;
  19. othersCls.nationality = 'Indian';
  20.  
  21. //Initialize the container class
  22. PersonalInformation.PersonalInfo personalInf = new PersonalInformation.PersonalInfo();
  23. personalInf.nameInfo = nameCls;
  24. personalInf.addressInfo = addressCls;
  25. personalInf.otherInfo = othersCls;
  26.  
  27. //Assign values to the Outer calss variables.
  28. personalInfo.studentRollNo = 'LE30088';
  29. personalInfo.personalDetails = personalInf;
  30.  
  31. System.debug('## Personal Info Class  '+personalInfo);
  32.  
  33. ////////////////////////// Accessing Values //////////////////////////////////////////
  34.  
  35. PersonalInformation personalInfoCls = personalInfo;
  36.  
  37. // Accessing parent class Student Roll Number Value
  38. System.debug('Student Roll Number: '+personalInfoCls.studentRollNo);
  39.  
  40. // Accessing Name inner class details from the container class instance.
  41. PersonalInformation.Name nameDetails = personalInfoCls.personalDetails.nameInfo;
  42. System.debug('Name Class: '+nameDetails);
  43. System.debug('First Name: '+nameDetails.firstName);
  44. System.debug('Last Name: '+nameDetails.lastName);
  45.  
  46. // Accessing Address inner class details from the container class instance.
  47. PersonalInformation.Address addressDetails = personalInfoCls.personalDetails.addressInfo;
  48. System.debug('Address Class: '+addressDetails);
  49. System.debug('Address Line 1: '+addressDetails.addressLine1);
  50.  
  51. // Accessing Others inner class details from the container class instance.
  52. PersonalInformation.Others otherDetails = personalInfoCls.personalDetails.otherInfo;
  53. System.debug('Others Class: '+otherDetails);
  54. System.debug('Age: '+otherDetails.age);

Activities: Assign Tasks to a Queue Salesforce Lightning

Salesforce announced to assign Tasks to a Queue beginning from Spring'20 release. How does it work? In Setup, enter Queues in th...