为什么在这种情况下数据没有被设置到List对象中?

时间:2012-08-13 10:11:44

标签: java

我将两个系列的数据(冒号)传递给一个方法,并期望在我的Custom类CountryDTO中设置

这是我的CountryDTO课程

public class CountryDTO {

    public CountryDTO(String a , String b , String c)
    {

    }
public String value1;
public String value2;
public String value3;

// setters and getters 

}



This is my Main class 

public class Test {

    public static void main(String args[]) throws Exception {

        Test test = new Test();
        List list = (List) test.extract("IND,US,UK : WI,PAK,AUS");

        Iterator itr = list.iterator();

        while (itr.hasNext()) {
            CountryDTO ind = (CountryDTO) itr.next();
            System.out.println(ind.getValue1());
        }
    }

    public List<CountryDTO> extract(final String v) throws Exception {
        String[] values = v.split(":");
        List<CountryDTO> l = new ArrayList<CountryDTO>();
        for (String s : values) {
            String[] vs = s.split(",");
            l.add(new CountryDTO(vs[0], vs[1], vs[2]));
        }
        return l;
    }
}

发生的事情是,我输出为null(未设置CountryDTO)

有人可以帮助我吗

2 个答案:

答案 0 :(得分:3)

因为在CountryDto构造函数中,您从未设置value1,也没有设置其他值,因此它们将保留null

答案 1 :(得分:3)

对不起,您的DTO不正确。我认为它应该是这样的:

public class CountryDTO {

    private final String value1;
    private final String value2;
    private final String value3;

    public CountryDTO(String a , String b , String c) {
        this.value1 = ((a != null) ? a : "");
        this.value2 = ((b != null) ? b : "");
        this.value3 = ((c != null) ? c : "");
    }

    // just getters; no setters 

}

我不能说你的代码可能做错了什么,但这肯定是偏离基础的。