• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Devaka Cooray
  • Ron McLeod
  • Jeanne Boyarsky
Sheriffs:
  • Liutauras Vilda
  • paul wheaton
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Piet Souris
  • Carey Brown
  • Tim Holloway
Bartenders:
  • Martijn Verburg
  • Frits Walraven
  • Himai Minh

Should the Singleton instance be a final variable?

 
Greenhorn
Posts: 12
Google Web Toolkit Eclipse IDE Oracle
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am doing coding exercises on Bert Bates's OCP Java SE 6 Programmer Practice Exams book. One of the questions is to write a singleton class (pg. 150).
Should the singleton instance be a final variable?


 
Sheriff
Posts: 27451
88
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Did you try changing the declaration for that variable to include "final"? What happened then?
 
Eric Kizaki
Greenhorn
Posts: 12
Google Web Toolkit Eclipse IDE Oracle
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I had to rewrite a lot of it. Now I think it won't be changed.

 
Ranch Hand
Posts: 300
Eclipse IDE Firefox Browser Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Hi Dude,

I don't think there is a need to make single instance as final but while writing Singleton class its worth noting to implement double checking of Singleton instance. e..g




Thanks
Javin
 
Bartender
Posts: 4109
72
Hibernate Fedora Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
And welcome to CodeRanch, Eric Kizaki
 
Ranch Hand
Posts: 240
2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
No! It is not necessary to declare the singleton instance final.
You may declare it final just to make sure the class will not be instantiated again within itself.
This is eager initialisation of the class.
 
Sheriff
Posts: 9697
43
Android Google Web Toolkit Hibernate IntelliJ IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
As Arun said it is not necessary to make the instance field final in singleton class. If you want to lazy initialize the class you can initialize it in the getInstance method. The example you gave where another method is making the instance null again, if there is such a code then your class will no longer be singleton. But that's a programming mistake (or design flaw or logical fault whatever), even making the instance final won't help if you make a programming mistake like that. For example this class will always create a new instance as the code is logically wrong:

 
I got this tall by not having enough crisco in my diet as a kid. This ad looks like it had plenty of shortening:
the value of filler advertising in 2021
https://coderanch.com/t/730886/filler-advertising
reply
    Bookmark Topic Watch Topic
  • New Topic