摆脱if/else

Kap*_*rma 5 java

在Java中,我将使用值设置POJO类.但是要决定使用哪个setter函数,我要依赖于if条件.我目前的代码如下:

// Code written in a function which is called within a loop, while parsing xml file.
if (name.equals("dim1")) {
    line.setDim1Code(Integer.parseInt(value));
} else if (name.equals("dim2")) {
    line.setDim2Code(Integer.parseInt(value));
} else if (name.equals("debitcredit")) {
    line.setDebitOrCredit(value);
} else if (name.equals("basevalue")) {
    line.setBasevalue(Integer.parseInt(value));
} else if (name.equals("rate")) {
    line.setRate(Integer.parseInt(value));
} else if (name.equals("value")) {
    line.setValue(Integer.parseInt(value));
} else if (name.equals("description")) {
    line.setDescription(value);
} else if (name.equals("vatbasetotal")) {
    line.setVatBaseTotal(value);
} else if (name.equals("vattotal")) {
    line.setVatTotal(value);
}
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,但我已经设置了70多个这样的属性.我的代码正在运行,但我想知道它是否正确的做事方式?

AFAIK,这样的代码反对编码最佳实践.我们如何在Java中优化此代码?处理此类代码的Java最佳实践是什么?

lib*_*bik 5

它实际上是一些东西,应该根据一些像Jackson 2.0+这样的库或类似的东西自动完成(到目前为止我只解析JSON)

然后对象看起来像这样:

@XmlAccessorType(XmlAccessType.FIELD)
    public class Employee
    {
        @XmlAttribute
        @XmlID
        protected String id;

        @XmlAttribute
        protected String name;

        @XmlIDREF
        protected Employee manager;

        @XmlElement(name="report")
        @XmlIDREF
        protected List<Employee> reports;

        public Employee() {
            reports = new ArrayList<Employee>();
        }
    }
Run Code Online (Sandbox Code Playgroud)