我有一个静态对象(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中)
答案 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();
}