Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何允许无限对象实例化?_Java_Object_Constructor_Instantiation_Objectinstantiation - Fatal编程技术网

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

Java 如何允许无限对象实例化?,java,object,constructor,instantiation,objectinstantiation,Java,Object,Constructor,Instantiation,Objectinstantiation,我目前正忙于一个Java程序。我的程序是一个城市建设者游戏,需要能够根据用户的突发奇想随时实例化对象,并且对象的数量需要是无限的 程序将有一个建筑类型对象 (我知道如何实例化新对象;就像这样 Building building1 = new Building(); …) 然而,这种方法对我的课程来说是不可接受的。我的程序需要能够动态实例化新的建筑对象。假设用户可以选择单击一个按钮,将一个新建筑放置到世界中。他们可以点击零次将一座新建筑放入世界,也可以点击5000次,从而将5000座建筑放入世界

我目前正忙于一个Java程序。我的程序是一个城市建设者游戏,需要能够根据用户的突发奇想随时实例化对象,并且对象的数量需要是无限的

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

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

Building building1 = new Building();
…)

然而,这种方法对我的课程来说是不可接受的。我的程序需要能够动态实例化新的建筑对象。假设用户可以选择单击一个按钮,将一个新建筑放置到世界中。他们可以点击零次将一座新建筑放入世界,也可以点击5000次,从而将5000座建筑放入世界

我显然不想实例化5000个对象,比如:

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

对如何编写代码有什么建议吗?提前谢谢

要做你似乎要求做的事情,你需要知道两件事

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

ArrayList<Building> buildings = new ArrayList<Building>();
之后,即使
building
变量超出范围,该建筑仍将保留在列表中。您必须确保
建筑物
对象由一个对象引用,该对象在您希望保留建筑物列表的期间内不超出范围

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

如果这不包括您需要的内容,请澄清您的问题

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

Building building = buildings.get(desiredIndex);
building.setDesiredValue("42");
您可以交替使用:

buildings.get(desiredIndex).setDesiredValue("42");
但我认为这更难理解


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

有两件事你需要知道,才能做你似乎要求做的事情

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

ArrayList<Building> buildings = new ArrayList<Building>();
之后,即使
building
变量超出范围,该建筑仍将保留在列表中。您必须确保
建筑物
对象由一个对象引用,该对象在您希望保留建筑物列表的期间内不超出范围

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

如果这不包括您需要的内容,请澄清您的问题

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

Building building = buildings.get(desiredIndex);
building.setDesiredValue("42");
您可以交替使用:

buildings.get(desiredIndex).setDesiredValue("42");
但我认为这更难理解


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

有两件事你需要知道,才能做你似乎要求做的事情

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

ArrayList<Building> buildings = new ArrayList<Building>();
之后,即使
building
变量超出范围,该建筑仍将保留在列表中。您必须确保
建筑物
对象由一个对象引用,该对象在您希望保留建筑物列表的期间内不超出范围

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

如果这不包括您需要的内容,请澄清您的问题

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

Building building = buildings.get(desiredIndex);
building.setDesiredValue("42");
您可以交替使用:

buildings.get(desiredIndex).setDesiredValue("42");
但我认为这更难理解


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

有两件事你需要知道,才能做你似乎要求做的事情

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

ArrayList<Building> buildings = new ArrayList<Building>();
之后,即使
building
变量超出范围,该建筑仍将保留在列表中。您必须确保
建筑物
对象由一个对象引用,该对象在您希望保留建筑物列表的期间内不超出范围

要认识到的第二件事是,创建500个建筑不需要500个不同的实例化语句。如果用户单击某个按钮,则会出现以下代码: