Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: Java
Expertise: Beginner
Dec 12, 2003



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Use Lazy Initialization to Conserve Resources

Say you have an object with a property that uses a relatively large amount of resources—and you know the property may never be accessed. Consider waiting to create the property until it's actually needed—especially if you are creating large numbers of these objects. Delaying creation in this manner is called lazy initialization.

Take for instance this Policy class:

public class Policy {
   private SalesPerson salesperson;

   // code missing to conserve space. . .

   public SalesPerson getSalesPerson() {
      return this.salesPerson;
You could create the SalesPerson object when the Policy is created:

public Policy() {
   this.salesPerson = new SalesPerson();
Or you could use lazy initialization to delay the creation until the SalesPerson object is actually needed:

public Policy() {

public SalesPerson getSalesPerson() {
   if ( this.salesPerson == null ) {
      this.salesPerson = new SalesPerson();

   return this.salesPerson;
Be careful when using this pattern. If you know ahead of time that the property will always be used, then lazy initialization is inappropriate because it simply adds complexity to your code. In addition, if you need your class to be thread safe, then you'll need to synchronize the test and creation of the SalesPerson object.
DevX Staff
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date