首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个将数据设置为对象的方法

创建一个将数据设置为对象的方法
EN

Stack Overflow用户
提问于 2014-08-15 07:42:31
回答 2查看 60关注 0票数 0

编写用于在不同条件下检查数据的代码。我有一个ArrayList of CRM对象"actionsList“(在另一个类中创建)。在这里,我检查这些对象的不同条件。满足我必须添加到ArrayList "remarksList“中的条件的对象。问题是如何创建一个方法setRemarkObject()来同时将所有数据设置为remarkObject?不要每次写:

代码语言:javascript
复制
  remarkObject.setRemark(checkString);
  remarkObject.setNumber(crm.getNumber());
  remarkObject.setDealer(crm.getDealer());
  remarkObject.setName(crm.getName());

..。

现在正确了吗?

代码语言:javascript
复制
import java.util.ArrayList;

public class Conditions {

    static ArrayList<CRM> remarksList = new ArrayList<CRM>();

    public ArrayList<CRM> conditionsChecking() {
        for (CRM crm : App.actionsList) {
            CRM remarkObject = new CRM();

            remarkObject.setNumber(crm.getNumber());
            remarkObject.setDealer(crm.getDealer());
            remarkObject.setName(crm.getName());
            remarkObject.setGroup(crm.getGroup());
            remarkObject.setClientStatus(crm.getClientStatus());
            remarkObject.setEntity(crm.getEntity());
            remarkObject.setTypeOfContact(crm.getTypeOfContact());
            remarkObject.setTypeOfFirstContact(crm.getTypeOfFirstContact());
            remarkObject.setSourceOfFirstContact(crm
                    .getSourceOfFirstContact());
            remarkObject.setOfferType(crm.getOfferType());
            remarkObject.setEventDate(crm.getEventDate());
            remarkObject.setBrand(crm.getBrand());
            remarkObject.setCarClass(crm.getCarClass());
            remarkObject.setModel(crm.getModel());
            remarkObject.setCarCode(crm.getCarCode());
            remarkObject.setWeek(crm.getWeek());
            remarkObject.setMonth(crm.getMonth());
            remarkObject.setYear(crm.getYear());
            remarkObject.setAmmount(crm.getAmmount());
            remarkObject.setSalesman(crm.getSalesman());
            remarkObject.setPhone(crm.getPhone());
            remarkObject.setEmail(crm.getEmail());
            remarkObject.setAddress(crm.getAdress());
            remarkObject.setCreationDate(crm.getCreationDate());
            remarkObject.setCreationTime(crm.getCreationTime());
            remarkObject.setModificationDate(crm.getModificationDate());
            remarkObject.setModificationTime(crm.getModificationTime());
            remarkObject.setBackdating(crm.getBackdating());

            if ((crm.getClientStatus().equals("Yes")) && ((crm.getAdress().isEmpty()))){
                crm.setRemark("Client's address is empty");
            remarksList.add(remarkObject);
            }
            else if ((crm.getClientStatus().equals("Yes")) && (crm.getPhone().isEmpty())){          
                crm.setRemark( "Phone field is empty");
            remarksList.add(remarkObject);
            }
            ///....
            else
                crm.setRemark("Nothing wrong");
                /// not adding to remarksLis

        }
        return remarksList;
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-15 08:07:32

您似乎一遍又一遍地做着相同的事情,添加了一个字符串,该字符串声明字段是否为空。那么,为什么不将设置器移动一个街区,在for循环之外呢?

代码语言:javascript
复制
static ArrayList<CRM> remarksList = new ArrayList<CRM>();

public ArrayList<CRM> conditionsChecking() {
    for (CRM crm : App.actionsList) {
        CRM remarkObject = new CRM();

        remarkObject.setNumber(crm.getNumber());
        remarkObject.setDealer(crm.getDealer());
        remarkObject.setName(crm.getName());
        remarkObject.setGroup(crm.getGroup());
        //etcetera, etcetera, all setters, except remark

        if ((crm.getClientStatus().equals("Yes")) && ((crm.getAdress().isEmpty())))
            crm.setRemark("Client's address is empty");
        else if ((crm.getClientStatus().equals("Yes")) && (crm.getPhone().isEmpty()))            
            crm.setRemark( "Phone field is empty");
        // etc, etc
        else
            remarksList.add(remarkObject);
    }
    return remarksList;
}

通常,对于setter和getters,还可以使用构造函数:

代码语言:javascript
复制
public CRM(String number, String dealer, String name, ...) { 
    this.number = number;
    //...etc
}

或者是建筑工人

代码语言:javascript
复制
public CRM() {}

public CRM setNumber(String number) { 
    this.number = number;
    return this;
}

public CRM setDealer(String dealer) { 
    this.dealer = dealer;
    return this;
}

//and use it like this
CRM crm = new CRM().setNumber("123").setDealer("dealer"); //et cetera
票数 0
EN

Stack Overflow用户

发布于 2014-08-15 08:13:04

据我所知,您正在将crm对象复制到每个if- remarkObject语句中。为什么不在所有if语句之前复制它,并且只在if- set语句中设置备注(CheckString)?然后,可以在所有这些语句之后将其添加到remarkList中。您可以使用CRM构造函数(即。CRM( crm )或通过克隆对象:How do I copy an object in Java?

此外,您正在检查每个if语句中的crm.getClientStatus().equals(“是”)--为什么不开始检查一次呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25322852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档