function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
ranjan nagaraju 7ranjan nagaraju 7 

variable not visible ranjan234.CustomObjectFactory.userPrefsDefaults at line 23

currently i'm trying to upgrade salesforce API version from 20 to 42.0. i'm having issue with below code which was compiling successfully earlier.
please help with above compile error and why its not throwing error @ line 22
public with sharing class CustomObjectFactory
{
public class UserPrefsDefaults
  {
    public final String name = 'User Preferences';
    public final String bestBetsView = 'MBB';
    public final Integer maxPages = 5;
    public final Integer timeFrameDays = 3;
    public final Boolean showWhatIsNew = true;
  }
  
  public static UserPrefsDefaults userPrefsDefaults
  {
    get {
      if(userPrefsDefaults == null) {
   Line 23--     userPrefsDefaults = new UserPrefsDefaults();
      }

      return userPrefsDefaults;
    }
  }
   
  }


 
Best Answer chosen by ranjan nagaraju 7
Narender Singh(Nads)Narender Singh(Nads)
Ohhh,

In that case do something like this:
public with sharing class CustomObjectFactory{
	public class UserPrefsDefaults{
		public final String name = 'User Preferences';
		public final String bestBetsView = 'MBB';
		public final Integer maxPages = 5;
		public final Integer timeFrameDays = 3;
		public final Boolean showWhatIsNew = true;
	}
  
	public UserPrefsDefaults userPrefsDefaultsObject{
		
		get{
			if(userPrefsDefaultsObject == null){
				userPrefsDefaults Object= new UserPrefsDefaults();
				return Object;
			}
			return userPrefsDefaultsObject;
		}
	}
}

All Answers

Narender Singh(Nads)Narender Singh(Nads)
Hi ranjan,

Try this code:
public with sharing class CustomObjectFactory
{
   public class UserPrefsDefaults{
     public final String name = 'User Preferences';
     public final String bestBetsView = 'MBB';
     public final Integer maxPages = 5;
     public final Integer timeFrameDays = 3;
     public final Boolean showWhatIsNew = true;
  }
  
  public static UserPrefsDefaults userPrefsDefaults(userPrefsDefaults userPrefsDefaults)
  {
    
      if(userPrefsDefaults == null) {
         userPrefsDefaults  userPrefsDefaultsObject= new UserPrefsDefaults();
      }

      return userPrefsDefaultsObject;
    }
}

// OR You can write your code like this as well (depends on what you want from your code)

public with sharing class CustomObjectFactory
{
   public class UserPrefsDefaults{
     public final String name = 'User Preferences';
     public final String bestBetsView = 'MBB';
     public final Integer maxPages = 5;
     public final Integer timeFrameDays = 3;
     public final Boolean showWhatIsNew = true;
  }
  
  public static UserPrefsDefaults FunctionToReturnAnObject()
  {
      userPrefsDefaults  userPrefsDefaultsObject= new UserPrefsDefaults();
      return userPrefsDefaultsObject;
  }
}
Let me know if it helps.
Thanks
ranjan nagaraju 7ranjan nagaraju 7
public with sharing class CustomObjectFactory
{
public class UserPrefsDefaults
  {
    public final String name = 'User Preferences';
    public final String bestBetsView = 'MBB';
    public final Integer maxPages = 5;
    public final Integer timeFrameDays = 3;
    public final Boolean showWhatIsNew = true;
  }
  
 public static UserPrefsDefaults userPrefsDefaults(userPrefsDefaults userPrefsDefaults)
  {

      userPrefsDefaults userPrefsDefaultsObject;

      if(userPrefsDefaults == null) {

         userPrefsDefaultsObject= new UserPrefsDefaults();

      }

 

      return userPrefsDefaultsObject;

    }
}
above code worked but what was the issue if you can explain this it would be helpful
 
Narender Singh(Nads)Narender Singh(Nads)
Hey ranjan,

This is a very general coding pattern of function calls and their return type for any programming language.

To understand the whole construct of APEX language, refer this following link:
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dev_guide.htm

This link contains everything that you need to know about apex language.

Thanks
 
ranjan nagaraju 7ranjan nagaraju 7
but i need this null check on getter method so how do i acheive that
Narender Singh(Nads)Narender Singh(Nads)
Ohhh,

In that case do something like this:
public with sharing class CustomObjectFactory{
	public class UserPrefsDefaults{
		public final String name = 'User Preferences';
		public final String bestBetsView = 'MBB';
		public final Integer maxPages = 5;
		public final Integer timeFrameDays = 3;
		public final Boolean showWhatIsNew = true;
	}
  
	public UserPrefsDefaults userPrefsDefaultsObject{
		
		get{
			if(userPrefsDefaultsObject == null){
				userPrefsDefaults Object= new UserPrefsDefaults();
				return Object;
			}
			return userPrefsDefaultsObject;
		}
	}
}
This was selected as the best answer
ranjan nagaraju 7ranjan nagaraju 7
thank you it worked , and i can use this variables in test classes right since its public and static variables