java - 如何允许无限对象实例化?

标签 java object constructor instantiation objectinstantiation

我目前陷入了 Java 程序的困境。我的程序是一个城市 build 游戏,需要能够根据用户的想法随时实例化对象,并且对象的数量需要是无限的。

该程序将有一个建筑类型对象。

(我知道如何实例化新对象;就像这样......

Building building1 = new Building();

...)

但是,这种方法对于我的程序来说是 Not Acceptable 。我的程序需要能够动态实例化新的 Building 对象。想象一下,用户可以选择单击一个按钮,将一座新建筑放入世界中。他们可以点击零次将新建筑物放置到世界中,也可以单击 5,000 次,从而将 5,000 座建筑物放置到世界中。

我显然不想实例化 5,000 个对象,如下所示:

Building building1 = new Building();
Building building2 = new Building();
...
Building building5000 = new Building();

对于如何编码有什么建议吗?提前致谢!

最佳答案

为了完成您似乎要求做的事情,您需要了解两件事。

第一个是(在本例中)建筑对象的集合。您可以在 Java 中使用类似

的行创建一个
ArrayList<Building> buildings = new ArrayList<Building>();

在您的代码中,如果执行以下两行,您将创建一个建筑物并将其添加到列表中:

Building building = new Building();
buildings.add(building);

之后,即使 building 变量超出范围,该建筑物仍将保留在您的列表中。您必须确保 buildings 对象所引用的对象在您想要保留建筑物列表的期间内不会超出范围。

要认识到的第二件事是,您不必使用 500 个不同的实例化语句来创建 500 栋建筑物。如果用户单击按钮,则有可以执行的代码(取决于您拥有的 UI 框架等);该代码可以创建一座建筑物并将其放入列表中。再次单击按钮时可以执行相同的代码;它将创建另一座建筑物并将其放入列表中。如果有一个关于要创建的建筑物数量的选项,那么点击代码可以查看该选项并在循环中创建它应该创建的任意数量的建筑物,并将它们放入列表中。

如果这不能满足您的需求,请澄清您的问题。

编辑:在数组中的对象上设置值

Building building = buildings.get(desiredIndex);
building.setDesiredValue("42");

您也可以使用:

buildings.get(desiredIndex).setDesiredValue("42");

但我认为这更难阅读。

仅供引用,“无限”数量的对象只能在具有无限内存的机器上支持;我认为这意味着“在运行时确定”。

关于java - 如何允许无限对象实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303456/

相关文章:

java - 使用 jFrame 数组?

c++ - C++ union 内的非平凡结构构造函数

hibernate - org.hibernate.hql.ast.QuerySyntaxException : Unable to locate appropriate constructor

javascript - 为什么为参数设置默认值在我的 JavaScript 中不起作用?

java - Spring MVC 应用程序中 jsp 文件中的粉碎表单

java - 如何使用 JSONPath 获取根级别 JSON 对象的键/名称?

java - 在我的主代码中使用 Thread.currentThread.sleep() 有什么危险吗?

c++ - 内存泄漏,我不知道为什么

java - SQLexecuteBatch处理速度慢

Python - 创建一个类并使用函数更改它的对象值