Java类和构造函数

Java类和构造函数,java,class,constructor,instances,Java,Class,Constructor,Instances,我希望这不会听起来像个愚蠢的问题 我有一个类a和一个类B。现在B只有一个字符串ID。 现在我可以有多个对象A,每个对象可以有0个或更多类型为B的对象。 它们包含在每个类a拥有的HashMap(ID,someData)中 我想做的是每次我在类a中添加一个新ID,以检查是否已经存在 是一个类型为B的对象,在我拥有的任何其他a类对象中具有相同的ID,如果没有,则创建一个新的B对象 希望这是有意义的。如果我问的是错的,请解释一下 这是一种糟糕的做法还是概念上的错误 非常感谢 编辑:更清楚地说,在我的情况

我希望这不会听起来像个愚蠢的问题

我有一个类a和一个类B。现在B只有一个字符串ID。 现在我可以有多个对象A,每个对象可以有0个或更多类型为B的对象。 它们包含在每个类a拥有的HashMap(ID,someData)中

我想做的是每次我在类a中添加一个新ID,以检查是否已经存在 是一个类型为B的对象,在我拥有的任何其他a类对象中具有相同的ID,如果没有,则创建一个新的B对象

希望这是有意义的。如果我问的是错的,请解释一下 这是一种糟糕的做法还是概念上的错误

非常感谢


编辑:更清楚地说,在我的情况下,不希望共享我所有对象的HashMap(ID,someData),例如,假设A是一个课程类、目录或银行等。每个A类可能共享一些学生/客户,但每个A类可能包含不同的B类对象。

这是一个不错的做法,看起来你正在实施这个计划

  • 能够(通过密钥)查找托管对象的一个或多个实例。如果只有一个托管对象,则不需要密钥

你需要做的是收集所有的对象,这样你就可以检查它们了。当你得到更多的对象,这将变得更加低效。一个不同的方法是构造这个集合,可能是在收集时使用ID

Map<ID,/* class with A and someData *> map = ...
Map=。。。

这允许您确保所有A中ID的唯一性。

为了达到您的目的,您可以将HashMap设置为
静态变量,而不是实例变量。因此,它将在类A的所有实例中共享。

如果我是你,我会创建一个B_工厂类。这个类将负责创建B对象。类对象将调用B_工厂方法来添加或删除B对象。在B_Factory中,您可以使用映射来存储B对象的实例


B_Factory类应该只有一个实例,它将被注入到所有A实例中。

您应该遍历所有A实例,并使用Hashmaps containsKey方法检查新的B值是否已存储。如果只需要将所有B值存储到每个A类一次,那么可以为HashMap字段添加一个静态修饰符