【问题标题】:我可以使用固定大小的数组参数声明 Java 方法吗?
【发布时间】:2022-01-23 13:50:21
【问题描述】:

在 C++ 中,我认为 possible 使用具有固定大小的输入数组对函数进行原型设计。我也可以对一般的 java 方法执行此操作吗?

此外,int[10]int[20] 的类型是否不同(可能出于重载目的)?

【问题讨论】:

  • 不,你不能
  • 不,Java 没有这样的东西。

标签: java arrays syntax overloading


【解决方案1】:

正如albjerto's answer 和 cmets 所述,Java 没有提供编译时语法来区分不同大小的数组参数(尽管在该答案状态下,您可以在运行时检查它)。

对于这个要求,我能想到的唯一(可怕的)编译时安全选项是解开数组并将其元素作为单独的参数传递。例如:

// so-called int[2] variant:
public void myMethod(int arg1, int arg2) {
    // Do something with the arguments
    // If you actually need an array, you could do:
    int[] arr = {arg1, arg2};
}

// so-called int[3] variant:
public void myMethod(int arg1, int arg2, int arg3) {
    // Your logic here...
}

// etc

对于较大的数组,这将很快变得非常麻烦,但对于较小的数组,它可能是一个有效的选择。

【讨论】:

    【解决方案2】:

    不,您不能强制方法参数的数组大小。

    但是,如果您有一个具有固定数量参数的数组,我想知道您是否有一个明确定义的对象类型(例如 3-D 笛卡尔坐标),因此您可以声明这样一个对象(例如Point3D),将其用作参数,并且显然强制键入。

    【讨论】:

      【解决方案3】:

      实际上你不能,但你仍然可以实现这样的东西,

      对于布尔返回函数,

      static boolean fixedArrayFuncBool(int[] arr, int lengthOfArray) {
              if (arr.length == lengthOfArray) {
                  return true;
              } else {
                  return false;
              }
          }
      

      对于整数返回函数,

      static int fixedArrayFuncInt(int[] arr, int lengthOfArray) {
          if(arr.length == lengthOfArray) {
              return lengthOfArray;
          }
          else {
              return -1;
          }
      }
      

      这些函数只是检查给定的数组是否是你给的长度,并根据它返回值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多