【问题标题】:Passing parameters to objects whilst simultaneously instantiating an array将参数传递给对象,同时实例化一个数组
【发布时间】:2014-03-05 16:05:44
【问题描述】:

我有一个 Object 数组,想知道是否可以在实例化数组的同时传递参数。

例如:

theArray = new Object(20, 20, 20)[30];

如果可以的话,我想避免在创建数组后循环遍历每个元素并将参数传递给它们。

我知道上面的语法不正确,但它说明了我想要实现的目标。

感谢您的回复!

【问题讨论】:

  • 不,你不能。但是请查看Arrays 类的替代方案。
  • 您可能可以执行类似 theArray = {new Object(20, 20, 20), new Object(20, 20, 20)...} 之类的操作,但仍然需要将它们全部输入.不完全确定这会奏效,但值得一试。

标签: java arrays parameters


【解决方案1】:

使用Arrays.fill() 避免循环。

示例

创建一个包含 30 个 MyClass 实例的数组,它们的值都为 20、20、20。

MyClass[] theArray = new MyClass[30];
Arrays.fill(theArray, new MyClass(20,20,20));

【讨论】:

  • 很好...不知道。想不出它对我正在做的事情有什么用,但很高兴知道是否有需要。
  • @BobStout 你想不出一个包含 30 个相同对象的数组的用途吗?你不是很有想象力。
  • 我主要处理数以千计的对象,它们各不相同,又相互关联。我的想象力目前被占据。 :)
  • 这几乎就是我要找的。我想这是我对手头任务的理解不足。这将为数组中的所有对象提供相同的属性。但是,我需要它们都具有相同的属性,但有一些例外。所以我想我将不得不循环!
【解决方案2】:

你可以这样做:

theArray = {20, 20, 20};

这意味着你有一个大小为 3 的数组。

【讨论】:

    【解决方案3】:

    如果您只是想保持主代码干净,请将其改组为函数:

    theArray = getObjects(30);
    ...
    private Object[] getObjects(int numObjects){
        Object[] returnObjects = new Object[30];
        for(int x=0; x<numObjects;x++){
        //etc, etc, etc
        }
        return returnObjects;
    }
    

    【讨论】:

    • 更多的是关于性能,我不想循环遍历数组中的每个元素并将参数传递给它们,如果我可以在实例化数组的时候这样做的话。跨度>
    • 约翰的回答是最适合你的。查看 odys 在stackoverflow.com/questions/9128737/… 的回答
    • 如果你要对答案投反对票,至少做个男人并解释原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2018-04-06
    • 2014-02-14
    • 2017-06-11
    • 2016-09-24
    • 2013-04-30
    • 2018-11-28
    相关资源
    最近更新 更多