好的我很确定这不是一个干净的实现。填充不同大小的数组
我有一个数组,我必须根据传入对象的属性填充属性。
我已经用一种相当脏的方式做了这件事,它回来咬我的屁股!
我们生病开始:
我有一个AccountsGRP[]
。我这两种方法之间填充:
public static AccountGrp[] popAccArr(IncomingObject incObject) {
ArrayList<AccountGrp> accAL = new ArrayList<AccountGrp>();
for (int i = 0; i < NoAccounts; i++) {
accAL.add(popAccAttr(i, incObject));
}
AccountGrp[] AccountGrpArr = (AccountGrp[]) accAL
.toArray(new AccountGrp[accAL.size()]);
return AccountGrpArr;
}
private static AccountGrp popAccAttr(int i, IncomingObject incObject) {
AccountGrp acc = new AccountGrpImpl();
switch (i) {
case 0:
acc.setAccount(incObject.getM_clientAcronym());
acc.setAccountType(AccountType.CUST);
acc.setAcctIDSource(AcctIDSource.SLANG);
acc.setGrandParentAccount(incObject.getM_grandparentNum());
return acc;
case 1:
acc.setAccount(incObject.getM_brokerAcronym());
acc.setAccountType(AccountType.BKR);
acc.setAcctIDSource(AcctIDSource.SLANG);
// acc.setGrandParentAccount(incObject.getM_grandparentNum());
return acc;
case 2:
acc.setAccount(incObject.getM_errorAccount());
acc.setAccountType(AccountType.FIRM);
acc.setAcctIDSource(AcctIDSource.SLANG);
acc.setAccountSubType(AccountSubType.ERROR);
return acc;
default:
acc.setAccount(incObject.getM_clientAcronym());
acc.setAccountType(AccountType.CUST);
acc.setAcctIDSource(AcctIDSource.SLANG);
acc.setGrandParentAccount(incObject.getM_grandparentNum());
return acc;
}
}
这是坏的编码然而,我需要填充一些不同类型的账户,这样这个case语句是不灵活和肮脏。有没有这个我正在考虑的合适的实施。只是写的方法与许多参数需要在相关的值,然而,问题的出现喜欢:
acc.setAccountType(AccountType.BKR);
acc.setAcctIDSource(AcctIDSource.SLANG);
哪些是返回枚举。也不是每个帐户迭代填充所有属性是否有一种方法来获得可选参数或者它只是一个重载的情况?
啊,ol'For-case结构(http://thedailywtf.com/Articles/The_FOR-CASE_paradigm.aspx)!当弹出时总是一个经典的;) –