在构造函数Java中设置数据时出现NullPointerException

时间:2015-04-28 20:25:13

标签: java constructor setter

我正在尝试将属性值作为数组获取,以便使用它们在PDF文件中显示某些数据。当我尝试这样的东西时,所有属性值都等于null。

Product p = new Product("989-ST", "Magazine Vogue");
System.out.println(p.getData().length);
for(String e : p.getData()){
System.out.print(e + " ");
}
//--Output:: 2
//--null     null

我的Prdocut课程就像:

Public class Product {
private String sku;
private String descripcion;


public Product() {

}

public Product(String sku, String descripcion) {
    sku = this.sku;
    descripcion = this.descripcion;

}

public String getDescripcion() {
    return descripcion;
}
public void setDescripcion(String descripcion) {
    this.descripcion = descripcion;
}
public String getSku() {
    return sku;
}
public void setSku(String sku) {
    this.sku = sku;
}

public String[] getData() {
    String[] data = { this.descripcion, this.sku };
    return data;
}
}

我错过了什么吗?因为当我使用setter设置属性值时,我可以得到预期的值:

Product p = new Product();
p.setSku("989-ST");
p.setDescription("Magazine Vogue");
System.out.println(p.getData().length);
for(String e : p.getData()){
System.out.print(e + " ");
}
//--Output:: 2
//--989-ST     Magazine Vogue

3 个答案:

答案 0 :(得分:1)

构造函数中的赋值语句必须颠倒过来:

this.sku = sku;
this.descripcion = descripcion;

否则你会将字段值(为空)分配给局部变量。

答案 1 :(得分:1)

您已撤销作业,并且您的课程sku和描述成员未正确初始化。您的构造函数应该看起来像

public Product(String sku, String descripcion) {
    this.sku = sku;
    this.descripcion = descripcion;
}

答案 2 :(得分:0)

你的构造函数必须是

public Product(String sku, String descripcion) {
    this.sku = sku;
    this.descripcion = description;
}

您必须将提供给构造函数的值作为参数设置为当前类范围内的变量。