我所試圖做的是無法調用HashSet的內類的方法
類總結在危險的影響值,例如,它會經過乘客的名單,發現危險並獲得影響從它的金額。然後總結所有危害的總體影響並將該價值返還給我。
下面我有洞穴類,危險級別和摘要乘員類。
向洞穴添加危險時,它成爲HashSet中的佔有者。 當試圖通過getImpact()方法獲取能量級別時,該方法無法訪問,因爲它處於危險中而不是佔用。
我有兩個其他職業也延伸佔用者。 玩家和商品。
添加到HashSet中時,我找不到一種方法將危險作爲危險類別,以便可以使用getImpact()方法。
當添加到HashSet時,這也需要迎合其他類Player和Item。
public class Cave {
HashSet<Occupant> occupants;
private double impact;
/**
* Creat a new Cave instance with no occupants.
*/
public Cave()
{
occupants = new HashSet<Occupant>();
}
/**
* Adds an occupant to a Cave if the occupant is not already there and
* if cave currently has fewer than the maximum number of occupants.
* @param occupant, the occupant to add
* @return true if successfully added
*/
public boolean addOccupant(Occupant occupant) {
boolean validNewOccupant = occupant != null;
boolean enoughRoom = occupants.size() < MAX_OCCUPANTS;
if (validNewOccupant && enoughRoom) {
validNewOccupant = occupants.add(occupant);
}
return validNewOccupant && enoughRoom;
}
/**
* Gets the sum of the impact from all hazards in the cave
* @returns hazardEnergyImpact
*/
public double getHazardEnergyImpacts(){
double energyImpact = 0.0;
for(Occupant occupant : occupants){
if(occupant.toString() == "!"){
energyImpact += occupant.getImpact();
}
}
return energyImpact;
}
}
public abstract class Occupant {
private Address address;
private String name;
/**
* Construct an occupant for a known address & name.
* @ param row, row of address
* @ param column, row of address.
* @ param name, occupant's name
*/
public Occupant(Address address, String name) {
this.address = address;
this.name = name;
}
@Override
public String toString(){
return "";
}
}
public class Hazard extends Occupant {
private String longDescription;
private double impact;
/**
* Construct a hazard with know attributes
* @param row
* @param column
* @param name
* @param longDescription
* @param impact
*/
public Hazard(Address address, String name, String longDescription, double impact) {
super(address, name);
this.longDescription = longDescription;
this.impact = impact;
}
@Override
public String toString(){
return "!";
}
/**
* gets impact amount
* @returns impact
*/
public double getImpact(){
return this.impact;
}
}
我同意,但是出來一個主要的白板會議(以及對需求的更好理解),您仍然必須收集*的危害* – Jeremy 2011-04-28 02:56:17