运行HashMap中对象的方法

时间:2013-12-09 19:52:07

标签: java hashmap

我有一个静态对象(hive)是在一个名为Garden的对象中创建的,我在许多其他对象中使用了hive中的方法。

现在我需要包含不同数据(数组等)的多重蜂巢。所以我将不同的Hives放在HashMap中。

我仍然需要从其他对象中的HashMap中的hives运行方法,我需要它从正确的hive实例运行该方法。

如何将hive中的方法作为不同Object中HashMap内的对象调用?

class Garden()
{
    Map<String, Hive> HiveMap = new HashMap<String, Hive>();
    Hive hiveA = new Hive();
    map.put("A", hiveA);
    Hive hiveB = new Hive();
    map.put("B", hiveB)
}

class Hive()
{
    ArrayList bees<Bee bee> = new ArrayList();
    Bee bossBee = new Bee;

    void importantHiveBusiness()
    {
    ...
    }
}

class Bee()
{
    //Garden.hive.importantHiveBusiness();  
}

不是真正的代码只是为了尝试显示我想要做的更清楚。谢谢你的帮助

Bee希望从它所在的蜂巢中运行该方法(蜜蜂在arrayList中)

3 个答案:

答案 0 :(得分:1)

map.get("A").importantHiveBusiness()

除非我将您的问题解释错误,否则应该这样做。

编辑:啊,我知道你在这里得到了什么。

您需要决定您的应用程序是使用多个Gardens,还是只使用一个。 如果你只需要一个花园,你应该使用“单身”设计模式。示例如下:

public class Garden {
    public static final Garden GARDEN = new Garden();
    private HashMap<String, Hive> hiveMap = new HashMap<String, Hive>();
    private Garden() {
        // create garden here
    }
    public HashMap<String, Hive> getHiveMap() {
        return this.hiveMap;
    }
}

私有构造函数非常重要。这确保了(只要你不在Garden类的代码中制作任何Garden对象,就只能存在一个Garden。 “static”关键字使GARDEN可以从代码中的任何位置访问。

然后你可以简单地做......

public class Bee() {
    // inside some method...
    Garden.GARDEN.getHiveMap().get("A").importantHiveBusiness();
}

或者,如果你想要多个花园,那么你只需要实例化(创建)一个Garden对象,myGarden.getHiveMap().get("A").importantHiveBusiness();

EDIT2:

Bee类可能包含对其配置单元的引用。这将消除对HiveMap的需求。

public class Bee {
    private final Hive hive;
    public Bee(Hive hive) {
        this.hive = hive;
    }
    public getHive() {
        return this.hive;
    }
}

答案 1 :(得分:1)

实例化Garden类的对象并使用

obj.HiveMap.get(”A”).importantHiveBusiness()

答案 2 :(得分:0)

一旦您在地图中拥有Hive并拥有有意义的密钥(根据您的业务逻辑),您就可以使用Hive方法访问get个对象:

class Bee() {
    Garden.HiveMap.get("A").importantHiveBusiness(); 
}