I just saw this tutorial creating multiple objects using the same instance by applying the DAO pattern and tried it in a simple console, but I always get this message java.lang.NullPointerException
I’m now confused, as far as I know, a constructor can be used once only, and the object will be immutable. Kindly look at this:
Fighter.java
public class Fighter { private String style; public Fighter() {} public String getStyle() { return style; } public void setStyle(String style) { this.style = style; } }
FightersDAO.java
public class FightersDAO { public List<Fighter> getFighters(){ List <Fighter> fighter = new ArrayList<>(); String [] styles= { "Karate", "Sumo", "Pro-Wrestling" }; for(int i=0; i < styles.length; i++) { Fighter temp = new Fighter();; temp.setStyle(styles[i]); fighter.add(temp); } return fighter; } }
Demo.java
public class Demo { private static FightersDAO fighterDAO; public static void main (String [] args) { List <Fighter> fighters = fighterDAO.getFighters(); for(Fighter e: fighters) { System.out.println(e.getStyle()); //this should output the objects, but nothing shows } } }
Why is it null? What part did went wrong
Advertisement
Answer
The variable fighterDAO
is never initialized. Therefore you get a NPE here:
List <Fighter> fighters = fighterDAO.getFighters();
To fix that use:
private static FightersDAO fighterDAO = new FightersDAO();