¿Por qué me está dando un Null Pointer?

Veréis, estoy haciendo un programa simple para practicar herencias, interfaces, enumerados, listas, etc. Ya que estoy empezando de cero con Java y con la programación en general, entonces ando un poco perdido y no se que he hecho mal. Tengo la clase padre “Personajes” que tiene una hija que es “Heroes”, la clase padre tiene tres listas: una para los nombres, otra para los colores de los trajes y otra para los poderes, el problema viene cuando creo un objeto en la clase main, dandole valores a null a los tres atributos de lista para añadirle los elementos en las siguientes lineas, pues me marca todo bien, pero cuando ejecuto: PUM, Null Pointer, y no se porque… os dejo el código, aunque creo que lo he hecho como siempre:

Esta es la clase padre:

package modelos;  import java.util.ArrayList; import java.util.List;  import enums.ColorTraje; import enums.EnumVengadores; import enums.SuperPoder;  public class Personaje {  private List<EnumVengadores> nombreLst; private List<SuperPoder> superPoderLst; private Integer edad; private Boolean isMalvado; private Float estatura; private List<ColorTraje> colorTrajeLst;  public Personaje() {      superPoderLst = new ArrayList<SuperPoder>();     nombreLst = new ArrayList<EnumVengadores>();     colorTrajeLst = new ArrayList<ColorTraje>();  }  public Personaje(List<EnumVengadores> nombreLst, List<SuperPoder> superPoderLst, Integer edad, Boolean isMalvado,         Float estatura, List<ColorTraje> colorTrajeLst) {      this.edad = edad;     this.isMalvado = isMalvado;     this.estatura = estatura;      if (nombreLst != null) {          this.nombreLst = nombreLst;      }      else {          nombreLst = new ArrayList<EnumVengadores>();      }      if (superPoderLst != null) {          this.superPoderLst = superPoderLst;      }      else {          superPoderLst = new ArrayList<SuperPoder>();      }      if (colorTrajeLst != null) {          this.colorTrajeLst = colorTrajeLst;      }      else {          colorTrajeLst = new ArrayList<ColorTraje>();      }  }  public List<EnumVengadores> getNombreLst() {      return nombreLst;  }  public void setNombreLst(List<EnumVengadores> nombreLst) {      this.nombreLst = nombreLst;  }  public List<SuperPoder> getSuperPoderLst() {      return superPoderLst;  }  public void setSuperPoderLst(List<SuperPoder> superPoderLst) {      this.superPoderLst = superPoderLst;  }  public Integer getEdad() {      return edad;  }  public void setEdad(Integer edad) {      this.edad = edad;  }  public Boolean getIsMalvado() {      return isMalvado;  }  public void setIsMalvado(Boolean isMalvado) {      this.isMalvado = isMalvado;  }  public Float getEstatura() {      return estatura;  }  public void setEstatura(Float estatura) {      this.estatura = estatura;  }  public List<ColorTraje> getColorTrajeLst() {      return colorTrajeLst;  }  public void setColorTrajeLst(List<ColorTraje> colorTrajeLst) {      this.colorTrajeLst = colorTrajeLst;  } 

Esta es una clase hijo:

package modelos;  import java.util.List;  import enums.ColorTraje; import enums.EnumVengadores; import enums.SuperPoder;  public class Heroe extends Personaje { private Boolean isAvenger;  public Heroe() {      super();  }  public Heroe(List<EnumVengadores> nombreLst, List<SuperPoder> superPoderLst, Integer edad, Boolean isMalvado,         Float estatura, List<ColorTraje> colorTrajeLst, Boolean isAvenger) {      super(nombreLst, superPoderLst, edad, isMalvado, estatura, colorTrajeLst);     this.isAvenger = isAvenger;  }  public Boolean getIsAvenger() {      return isAvenger;  }  public void setIsAvenger(Boolean isAvenger) {      this.isAvenger = isAvenger;  } 

Y este es mi main:

package modelos;  import enums.ColorTraje; import enums.EnumVengadores; import enums.SuperPoder;  public class mainVengadores {  public static void main(String[] args) {     // TODO Auto-generated method stub      /*Personaje ironman = new Heroe();     ironman.setEdad(48);     ironman.getNombreLst().add(EnumVengadores.IRONMAN);     ironman.getColorTrajeLst().add(ColorTraje.AMARILLO);      System.out.println(ironman);*/       Personaje hulk=new Personaje(null, null, 45, true, 1.23f, null);      hulk.getNombreLst().add(EnumVengadores.HULK);     hulk.getColorTrajeLst().add(ColorTraje.VERDE);     hulk.getColorTrajeLst().add(ColorTraje.AZUL);     hulk.getColorTrajeLst().add(ColorTraje.AMARILLO);     hulk.getSuperPoderLst().add(SuperPoder.Super_Fuerza);      System.out.println(hulk);      } } 

Cuando ejecuto la clase main, me da como resultado un Null Pointer, ¿alguna ayuda? Mil gracias 🙂