使用ArrayList的多个构造函数不起作用

时间:2015-09-04 17:30:07

标签: java arraylist constructor

我在同一个班级使用多个构造函数,但几天前我遇到了一个“罕见”的问题。构造函数初始化所有字段=(

我有Ejercicio.java类

   public class Ejercicios {
    int Id_Ejercicio;
    String Descripcion;
    String Finalidad;
    String Duracion;

    //Constructor
    public Ejercicios() {
        super();
    }

    //Constructor with 2 fields 
    public Ejercicios(int id_Ejercicio, String descripcion) {
        super();
        Id_Ejercicio = id_Ejercicio;
        Descripcion = descripcion;
    }

    //Constructor with 4 fields 
    public Ejercicios(int id_Ejercicio, String descripcion, String finalidad, String duracion) {
        super();
        Id_Ejercicio = id_Ejercicio;
        Descripcion = descripcion;
        Finalidad = finalidad;
        Duracion = duracion;
    }
}

Lista_Ejercicios.java类

public class List_Ejercicios {

    ArrayList<Ejercicios> lejer;

    public List_Ejercicios() {
        super();
    }
}

我的主要课程,我尝试使用这些不同的构造函数

public Response Principal(SQLQuery){
   List<Ejercicios> listaEJER = new ArrayList<Ejercicios>();
   dbCon = new ConexionBD();
   ResultSet rslt;

    try {
        conn = (Connection) ConexionBD.setDBConnection();
        rslt = dbCon.getResultSet(SQLQuery, conn);  
        while(rslt.next()){             
            listaEJER.add(new Ejercicios( rslt.getInt(1),rslt.getString(2) ));
        }       
    }catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  //finally block code
   return Response.ok(listaEJER.toArray()).build();
}

我正在使用Chrome的“高级休息客户端”,我不知道为什么我收到4个字段,而不是像我在构造函数中指定的那样

...
{
descripcion: "Jump as high as you can"
id_Ejercicio: 1
finalidad: null
duracion: null
}
...

我遇到麻烦,这些构造函数在两周前工作了,我不知道为什么它的运行目前不起作用。

1 个答案:

答案 0 :(得分:2)

他们两周前做了工作。你改变了一些东西。当您在班级中声明一个字段时,该字段始终。如果不在构造函数中初始化它,它将自动初始化。对于类,此默认值为null,而对于基元,它为0false等。但是,这与在构造函数中将其初始化为该值的行为完全相同 - myEjercicios.Finalidad(请使用命名约定)将为null,因为它是String类型的自动初始化对象。

至于解决此问题,编写一些代码以打印null的值并不困难。但是,如果您想要一组不同的字段,必须声明两个不同的类(可能一个扩展另一个)。