我有一个静态对象(hive),它是在名为 Garden 的对象中创建的,并且我在许多其他对象中使用了 hive 中的方法。
现在我需要包含不同数据(数组等)的多个配置单元。因此我将不同的配置单元放入 HashMap 中。
我仍然需要从现在位于其他对象的 HashMap 中的配置单元运行方法,并且我需要它从正确的配置单元实例运行该方法。
如何将 hive 中的方法作为不同对象中 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();
}
不是实际的代码,只是为了尝试更清楚地展示我想要做什么。感谢您的帮助
蜜蜂想要从它所在的 hive 运行该方法(蜜蜂在 arrayList 中)
最佳答案
map.get("A").importantHiveBusiness()
除非我错误地解释了你的问题,否则这应该可以。
编辑:啊,我明白你在这里得到了什么。
您需要决定您的应用程序是使用多个 Garden,还是仅使用一个 Garden。 如果您只需要一个花园,则应该使用“单例”设计模式。下面的例子:
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;
}
}
私有(private)构造函数非常重要。这确保了(只要您不在 Garden 类的代码中创建任何 Garden 对象,就只能存在一个 Garden。 “static”关键字使 GARDEN 从代码中的任何位置都可以访问。
然后你可以简单地做...
public class Bee() {
// inside some method...
Garden.GARDEN.getHiveMap().get("A").importantHiveBusiness();
}
或者,如果您想要多个花园,那么您只需要实例化(创建)一个 Garden 对象,然后 myGarden.getHiveMap().get("A").importantHiveBusiness();
编辑2:
Bee 类包含对其配置单元的引用可能很有用。这将消除对 HiveMap 的需要。
public class Bee {
private final Hive hive;
public Bee(Hive hive) {
this.hive = hive;
}
public getHive() {
return this.hive;
}
}
关于java - 运行 HashMap 中的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20479427/