不知道这是否可行,似乎无法在线找到答案,所以就去了。
我正在用Java构建广告竞标平台的模型,广告商在该平台上提交要约以在网站上展示广告,出价最高者获胜。
我创建了一个Bid对象(其中包含所提供的价格,广告网址和要跟踪的出价者的名称)和一个Auction对象,它实际上只是一个价格(以ints为单位)和Bids(作为Bid对象)的TreeMap。 / p>
我知道这是一件非常基本的事情,但是有可能让Bid对象构造函数将Bid添加到Auction中吗?只是坚持DRY原则?如果无法从构造函数中获取,是否可以在Main方法之外自动进行其他操作?
Bid.class
public class Bid {
private int cents;
private String location;
private String bidServer;
public Bid(int cents, String location, String bidServer) {
this.cents = cents;
this.location = location;
this.bidServer = bidServer;
}
public int getCents() {
return cents;
}
public String getLocation() {
return location;
}
public String getBidServer() {
return bidServer;
}
}
拍卖.class
import java.util.Map;
import java.util.TreeMap;
public class Auction {
private Map<Integer, Bid> bids ;
public Auction() {
this.bids = new TreeMap<>();
}
public void addBid (Bid bid){
bids.put(bid.getCents(), bid);
}
public Bid getHighestBid(){
return bids.get(((TreeMap<Integer, Bid>) bids).lastKey());
}
public void clearBids(){
bids.clear();
}
}
答案 0 :(得分:1)
构造出价时,您可以传递Auction
对象,然后像这样将Bid
添加为this
:
public Bid(int cents, String location, String bidServer, Auction auction) {
this.cents = cents;
this.location = location;
this.bidServer = bidServer;
auction.addBid(this);
}
答案 1 :(得分:1)
在addBid
中更改方法Auction
:
public void addBid(int cents, String location, String bidServer) {
Bid bid = new Bid(cents, location, bidServer);
bids.put(cents, bid);
}
您可以将Auction
和Bid
放在同一包中,并使Bid
的构造函数为package.private。
此外,您应该像这样声明bids
:
private SortedMap<Integer, Bid> bids;
在这种情况下,您可以这样编写方法getHighestBid
:
public Bid getHighestBid() {
return bids.get(bids.lastKey());
}