title: Avoid instantiating a class in java
body: <p>Recently I've faced a question : <em>How to avoid instantiating a Java class?</em></p>
  
  <p>However, I answered by saying:</p>
  
  <ol>
  <li><p>If you don't want to instantiate a class, use "abstract" modifier. Ex: javax.servlet.HttpServlet, is declared as abstract(though none of its methods are abstract) to avoid instantiation.</p></li>
  <li><p>Declare a no argument private constructor.</p></li>
  </ol>
  
  <p>Now my question is 
  a) are there any other ways?
  b) why does any one do not want to instantiate a class? - after searching in SO, I got to know from <a href="https://stackoverflow.com/questions/309553/should-helper-utility-classes-be-abstract">this</a> that Util classes can be made not to instantiate. Any other places where we don't want to instantiate a class in OOP?</p>