2017-04-18 49 views
-3

我有一個我創建的對象,稱爲年度...我有這個對象的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; 
    } 
+0

你只能在第一個'annual'上調用'setWhatever'。你永遠不會在'annual1','annual2'或'annual3'上調用這些方法。 – user2357112

+0

謝謝!我沒有收到, – user4979843

回答

4
Annuals annual1 = new Annuals(); 
annual.setDataYear(BigDecimal.valueOf(2014)); 
annual.setValue(BigDecimal.valueOf(4009.0)); 
annual.setType(InvestConstants.TOTAL_SHARES_OUTSTANDING); 

你正在創建一個名爲annual1annual2等新的實例 - 但只修改annual

2

您正在重複使用始終相同的變量annual

注意你的代碼,創建的Annual一個新實例,並分配實例變量annual1或之後annual2你重用舊變量annual

Annuals annual1 = new Annuals(); 

annual.setDataYear(BigDecimal.valueOf(2014)); 
+0

謝謝!男人,簡單的東西...我沒有抓住它。 – user4979843

相關問題