java - 卡在 java setter 方法上

标签 java setter

我有一个 StockList 类,其中包含一个链接列表,可以使用多种方法控制库存。但是,我一直不知道要在 updateItemPrice 方法的方法体内放入什么内容。 我是否需要使用 setter 来设置新商品的价格,如果需要,我该怎么做?

这是我到目前为止的代码,任何帮助将不胜感激!

import java.util.*;
public class StockList {
{
private LinkedList<StockItem> stock
        = new LinkedList<StockItem>();


public StockList() {};


// Adds item to end of stock list
public void addItem(StockItem item) 
{
    this.stock.addLast(item);
}


// Removes item identified by productID from stock list
public void deleteItem(String itemID) 
{
    ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
            StockItem item = (StockItem)itr.next();
    if(item.getitemID() == itemID)
    {
                    stock.remove(itr.previousIndex());
        break;
    }
    }
}


// Updates price of existing item
public void updateItemPrice(String itemID, double price) 
{
    ???
}


// Updates quantity of existing item
public void updateItemQuantity(String itemID, int quantity) 
{…}


// Updates re-order level of existing item
public void updateReOrderLevel(String itemID, 
int reOrderLevel) 
{…}


// Returns formatted representation of the stock list
public String formatStockList()
{…}


// Returns formatted representation of re-order list
// Items are on this list if quantity < reOrderLevel
public String formatReOrderList()
{…}
}




}

最佳答案

StockItem 需要有 setter 方法来设置价格,如 setPrice

 ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
    StockItem item = (StockItem)itr.next();
    if(item.getitemID() == itemID)
    {
                    item.setPrice(price);
         break;
    }
  }

但是您的删除代码也存在问题...

public void deleteItem(String itemID) 
{
    ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
            StockItem item = (StockItem)itr.next();
    if(item.getitemID() == itemID)
    {
                    stock.remove(itr.previousIndex());
        break;
    }
    }
}

这会给您带来并发访问异常。请改用下面的代码。

public void deleteItem(String itemID) 
    {
        ListIterator itr = stock.listIterator();
    while(itr.hasNext())
     {
         StockItem item = (StockItem)itr.next();
        if(item.getitemID() == itemID)
        {
            itr.remove(); // Removes last obejct returned by itr.next()
            break;
        }
     }
  }

关于java - 卡在 java setter 方法上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16304077/

相关文章:

ios - 覆盖 selectedSegmentIndex

java - Java 中单独的 { code } 是做什么用的?

c# - C# setter 中的 ArgumentNullException

java - JBoss 应用程序错误

java - 读取由逗号和空格分隔的一行 - java

javascript - 未捕获的语法错误 : Setter must have exactly one formal parameter

javascript - 拦截 javascript 值 setter

java - 当子类在本地重写其中一些方法时,如何强制子类使用父方法?

java - Hibernate 多对多关系

java - 无法让屏幕显示设置选项