【问题标题】:Can an array of a specific number of references be passed as a parameter to a function?可以将特定数量的引用数组作为参数传递给函数吗?
【发布时间】:2016-11-06 22:30:13
【问题描述】:

如果我想将特定数量的引用传递给一个方法,我该怎么做?

例如

public void getArr(CP[] c,String t)
{
    for(int i=0;i<c.length;i++)
    {
        cp[nr]=c[nr];
        nr++;
    }
}

例如,我希望我的方法准确地获取一个包含 3 个对 CP 对象的引用的数组;我如何在方法中指定它?

【问题讨论】:

  • 数组长度不是类型的一部分,因此不能通过方法签名强制执行。你可以有 3 个参数;但我猜你想要一些不那么笨重的东西。
  • 是的 :) .Could it's done with collections?
  • 仅当您有一个专门设计用于容纳 3 个元素的自定义集合时。同样,大小不是集合类型的一部分。

标签: java arrays methods parameters


【解决方案1】:

这在 java 中是不可能的,因为数组的长度不是其类型的一部分。您可以通过在运行时检查来解决它:

public void getArr(CP[] c,String t)
{
    if (c.length != 3) {
        throw new IllegalArgumentException("Required exactly 3 array elements");
    }
    for(int i=0;i<c.length;i++)
    {
        cp[nr]=c[nr];
        nr++;
    }
}

或者assert:

public void getArr(CP[] c,String t)
{
    assert c.length == 3 : "Required exactly 3 array elements";
    for(int i=0;i<c.length;i++)
    {
        cp[nr]=c[nr];
        nr++;
    }
}

【讨论】:

    【解决方案2】:

    这在 Java 中是不可能的。

    CP[]c类型;数组的特定大小不构成类型的一部分。所以你不能导致编译时失败。

    如果您不想依赖运行时检查,为什么不传递 CP c1, CP c2, CP c3 并在调用站点分解数组?

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2013-03-08
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多