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 :)