2012-11-26 128 views
0

嗨我不是很好的OOP,对不起,如果有人问过同样的问题。现在我从另一个对象,其中两个对象属于一个对象acccesing对象的属性有问题属于同一类的另一个对象的anobject的属性

public abstract class GameClient(){ 
protected ClientRegistry registry; 
.. 
} 


public class MarketClient extends GameClient { 
public Auctioneer auctioneer = null; 
public Specialist specialist; 
... 
((GenericDoubleAuctioneer) auctioneer).setRegistry((MarketRegistry) registry); 
specialist = registry.addSpecialist(clientId); 
} 


public class Specialist extends AccountHolder() { 
public Specialist(final String id) { 
     this(id, null); 
... 
} 


public interface Auctioneer extends QuoteProvider(){ 
public MarketRegistry getRegistry(); 
public List configuration 
... } 

    public class DailyAssessmentReport(){ 
protected void calculateProfits() { 
final Specialist specialists[] = GameController.getInstance().getRegistry().getSpecialists(); 
//later, I'll get the ID of each specialist from specialists[]; 
... 
... 
public Map< specialistID, List, Score> Result; 
//this Map contains specialistID , auctioneer.configuration, score 
} 

我想要做的就是让其中包括一个MAP(specialistID,auctioneer.configuration,利润) 。我的问题是我怎样才能从DailyAssessmentReport类访问/获得Auctioneer.configuration的值?

我真的很感激你的答案

+0

请明确你的意思是“[...]从另一个对象获取对象的属性,其中两个对象都属于一个对象”。 –

+0

我有一个'MarketClient'对象,这个'MarketClient'具有属性''专家'和'拍卖者'(都是不同的类),不知何故我可以从另一个类获得'专家'对象,我怎样才能访问其中的一个当我唯一拥有的是'专家'时,'拍卖者'属性? – 4reen

回答

0

可以使用地图,例如为你的目的一个HashMap。请注意,映射从一个对象映射到另一个对象。他们不会将一个对象映射到另外两个对象,如您在示例中尝试执行的操作。但是,您仍然可以通过将两个目标对象存储在公用容器对象(例如ArrayList或2元素数组)中,然后映射到容器对象来实现目标。例如:

HashMap<String, Object[]> specialistIdToContainerObjectMap = new HashMap<String, Object[]>(); 

// get two objects which should be looked up later through the map, based on specialist ID 
Specialist specialist = ...; 
Auctioneer auctioneer = ...; 

// create container object to hold the two objects to which we want to map 
Object[] containerObject = new Object[2]; 
containerObject[0] = specialist; 
containerObject[1] = auctioneer; 

// store the container object in the map 
specialistIdToContainerObjectMap.put(specialist.getId(), containerObject); 

你可以再后来查找的容器对象,并从中提取了两个被引用对象:

// get a specialist id from somewhere, e.g. by doing someSpecialist.getId() 
String specialistId = ...; 

// look up the container object from the map 
Object[] containerObject = specialistIdToContainerObjectMap.get(specialistId); 

// extract the specialist and the auctioneer from the container object 
Specialist specialist = (Specialist) containerObject[0]; 
Auctioneer auctioneer = (Auctioneer) containerObject[1]; 

我希望这可以帮助你。如果不是,例如因为我误解了你的问题,请提供反馈意见,以便我们可以尝试为你找到合适的解决方案。

相关问题