Java Reference
In-Depth Information
Code 4.9
continued
Handle a bid for a lot
/**
* Attempt to bid for this lot. A successful bid
* must have a value higher than any existing bid.
* @param bid A new bid.
* @return true if successful, false otherwise
*/
public
boolean
bidFor(Bid bid)
{
if
(highestBid ==
null
) {
// There is no previous bid.
highestBid = bid;
return
true
;
}
else if
(bid.getValue() > highestBid.getValue()) {
// The bid is better than the previous one.
highestBid = bid;
return
true
;
}
else
{
// The bid is not better.
return
false
;
}
}
Other methods omitted.
}
Here, we first check whether this bid is the highest bid. This will be the case if there has been
no previous bid or if the current bid is higher than the best bid so far. The first part of the check
involves the following test:
highestBid == null
This is a test for whether the
highestBid
variable is currently referring to an object or not.
As described in the previous section, until a bid is received for this lot, the
highestBid
field
will contain the
null
value. If it is still
null
, then this is the first bid for this particular lot and
it must clearly be the highest one. If it is not
null
, then we have to compare its value with the
new bid. Note that the failure of the first test gives us some very useful information: we now
know for sure that
highestBid
is not
null
, so we know that it is safe to call a method on it.
We do not need to make a
null
test again in this second condition. Comparing the values of the
two bids allows us to choose a higher new bid or reject the new bid if it is no better.
4.14.4 The
Auction
class
The
Auction
class (Code 4.10) provides further illustration of the
ArrayList
and for-each
loop concepts we discussed earlier in the chapter.
Search WWH ::
Custom Search