繁体   English   中英

Java List的奇怪行为

[英]Weird behaviour of Java List

我有这个要求用千分隔符显示金额。 我有这个POJO类,我根据我的要求调用这两种方法

public Integer getTotalAmount() {
    return totalAmount;
}

public String getTotalAmountWithSeparator() {
    return String.format("%,d", totalAmount);
}

public void setTotalAmount(Integer totalAmount) {
    this.totalAmount = totalAmount;
}

现在,当我在另一个看起来像这样的类中使用这个方法getTotalAmountWithSeparator()时,我做了一个println来查看是否正确显示了数量(它确实如此)。

List<SupplierOrderDetails> list = SupplierOrderDetailBussinessLogic.getInstance().getSupplierOrderDetailsFromsupplierOrder(supplierOrder);

      DataProviderBuilder dpb = new DataProviderBuilder();

    // add heading data
    dpb.add("so", supplierOrder.getSupplierOrderNo());
    dpb.add("sn", supplierOrder.getSupplier().getPerName());
    dpb.add("sec", supplierOrder.getSection().getAlternateName());
    dpb.add("od", supplierOrder.getSupplierOrderCreated().toString());

    // add table data
    dpb.addJavaObject(list, "data");

这里是实际方法getSupplierOrderDetailsFromsupplierOrder(supplierOrder); 从db获取数据。

@SuppressWarnings("unchecked")
public List<SupplierOrderDetails> getSupplierOrderDetailsFromsupplierOrder(SupplierOrder supplierOrderDetails){
    Session hibernateSession = HibernateUtills.getInstance().getHibernateSession();
    Criteria criteria = hibernateSession.createCriteria(SupplierOrderDetails.class);
    criteria.add(Restrictions.eq("supplierOrderID", supplierOrderDetails));
    List<SupplierOrderDetails> models = criteria.list();

    System.out.println(" models.size()     " + models.size());

    for (int i = 0; i < models.size(); i++)
    {
        if (models.get(i).getId() != null)
        {
            models.get(i).getProductID().getProductCode();
            models.get(i).getProductID().getBrandName();
            models.get(i).getPurchasePrice();
            models.get(i).getOrderQty();
            models.get(i).getTotalAmountWithSeparator();
            System.out.println(models.get(i).getProductID().getBrandName() + "  TotalAmount      " + models.get(i).getTotalAmountWithSeparator());

        }
        // System.out.println(models.get(i).getPurchasePrice());
    }
    return models;
} 

但是当我在这里打印列表数据时,它没有显示数量的分隔符为什么?????我做错了什么

dp = getSupplierOrderData(Long.parseLong(supplierOrderId));
System.out.println("DATA    "+dp.getString("data"));

因为dp.toString()方法使用getTotalAmount()而不是getTotalAmountWithSeparator()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM