我有一個我創建的對象,稱爲年度...我有這個對象的getter和setter,它實現了可比較的。當我創建多個這個對象添加到列表中時,我最終得到一個帶有值的對象,但所有後續對象都具有空值。我如何防止這種情況?代碼被對象和創建對象擊碎。無法在多個對象上設置值
在此先感謝...
對象:
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.Date;
/**
* @author
*
*/
public class Annuals implements Comparable<Annuals>
{
private BigDecimal value;
private Date dateCalculated;
private BigDecimal dataYear;
private String type;
/**
* @return the value
*/
public BigDecimal getValue()
{
return value;
}
/**
* @param value the value to set
*/
public void setValue(BigDecimal value)
{
this.value = value;
}
/**
* @return the dateCalculated
*/
public Date getDateCalculated()
{
return dateCalculated;
}
/**
* @param dateCalculated the dateCalculated to set
*/
public void setDateCalculated(Date dateCalculated)
{
this.dateCalculated = dateCalculated;
}
/**
* @return the dataYear
*/
public BigDecimal getDataYear()
{
return dataYear;
}
/**
* @param dataYear the dataYear to set
*/
public void setDataYear(BigDecimal dataYear)
{
this.dataYear = dataYear;
}
/**
* @return the type
*/
public String getType()
{
return type;
}
/**
* @param type the type to set
*/
public void setType(String type)
{
this.type = type;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return "Annuals [value=" + value + ", dateCalculated=" + dateCalculated + ", dataYear=" + dataYear + ", type="
+ type + "]";
}
public static Comparator<Annuals> yearComparator = new Comparator<Annuals>()
{
@Override
public int compare(Annuals o1, Annuals o2)
{
return o1.getDataYear().compareTo(o2.getDataYear());
}
};
@Override
public int compareTo(Annuals o)
{
return this.value.compareTo(o.value);
}
}
創建對象:
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class CreateCompanies
{
private List<CompanyInfoDO> companiesList = new ArrayList<CompanyInfoDO>();
/**
* @return the companiesList
*/
public List<CompanyInfoDO> getCompaniesList()
{
return companiesList;
}
/**
* @param companiesList the companiesList to set
*/
public void setCompaniesList(List<CompanyInfoDO> companiesList)
{
this.companiesList = companiesList;
}
public CreateCompanies()
{
CompanyInfoDO company = new CompanyInfoDO();
company.setCompanyName("Ford");
company.setDate(Calendar.getInstance().getTime().toString());
company.setShares("39000000000");
company.setTicker("f");
company.setStockPrice(BigDecimal.valueOf(11.14));
company.setTotalOutstandingSharesAnnuals(getTotalSharesOutstandingList());
company.setNetIncomeAnnuals(getNetIncomeList());
companiesList.add(company);
}
private List<Annuals> getTotalSharesOutstandingList()
{
List<Annuals> annualsList = new ArrayList<Annuals>();
Annuals annual = new Annuals();
annual.setDataYear(BigDecimal.valueOf(2013));
annual.setValue(BigDecimal.valueOf(3984.0));
annual.setType(InvestConstants.TOTAL_SHARES_OUTSTANDING);
Annuals annual1 = new Annuals();
annual.setDataYear(BigDecimal.valueOf(2014));
annual.setValue(BigDecimal.valueOf(4009.0));
annual.setType(InvestConstants.TOTAL_SHARES_OUTSTANDING);
Annuals annual2 = new Annuals();
annual.setDataYear(BigDecimal.valueOf(2015));
annual.setValue(BigDecimal.valueOf(4031.0));
annual.setType(InvestConstants.TOTAL_SHARES_OUTSTANDING);
Annuals annual3 = new Annuals();
annual.setDataYear(BigDecimal.valueOf(2016));
annual.setValue(BigDecimal.valueOf(3931.0));
annual.setType(InvestConstants.TOTAL_SHARES_OUTSTANDING);
annualsList.add(annual);
annualsList.add(annual1);
annualsList.add(annual2);
annualsList.add(annual3);
return annualsList;
}
private List<Annuals> getNetIncomeList()
{
List<Annuals> annualsList = new ArrayList<Annuals>();
Annuals annual = new Annuals();
annual.setDateCalculated(Calendar.getInstance().getTime());
annual.setType(InvestConstants.NET_INCOME);
annual.setValue(BigDecimal.valueOf(11953.0));
annual.setDataYear(BigDecimal.valueOf(2013));
System.out.println("Annual: "+ annual.toString());
annualsList.add(annual);
Annuals annual2 = new Annuals();
annual.setDateCalculated(Calendar.getInstance().getTime());
annual.setType(InvestConstants.NET_INCOME);
annual.setValue(new BigDecimal(1231.0));
BigDecimal val2 = new BigDecimal(2014);
annual.setDataYear(val2);
System.out.println("Annual 2 : "+ annual2.toString());
Annuals annual3 = new Annuals();
annual.setDateCalculated(Calendar.getInstance().getTime());
annual.setType(InvestConstants.NET_INCOME);
annual.setValue(BigDecimal.valueOf(7373.0));
annual.setDataYear(BigDecimal.valueOf(2015));
Annuals annual4 = new Annuals();
annual.setDateCalculated(Calendar.getInstance().getTime());
annual.setType(InvestConstants.NET_INCOME);
annual.setValue(BigDecimal.valueOf(4596.0));
annual.setDataYear(BigDecimal.valueOf(2016));
//annualsList.add(annual);
annualsList.add(annual2);
annualsList.add(annual3);
annualsList.add(annual4);
System.out.println("Net Annuals List: Creating Company: "+annualsList.toString());
return annualsList;
}
你只能在第一個'annual'上調用'setWhatever'。你永遠不會在'annual1','annual2'或'annual3'上調用這些方法。 – user2357112
謝謝!我沒有收到, – user4979843