Java 转换 func_get_args PHP、varargs

标签 java php variadic-functions

亲切的问候...

我用 PHP 实现了这个。

function Func0($sString1,$iInteger0,$sString2) {
  $OrigArgs = func_get_args();//The arguments
  Func1($OrigArgs,1);
}
function Func1($OriginalArgs,$AddedArg) {
  $NumFirstArgs = size($OriginalArgs);
  if ($NumFirstArgs>3) {
    print("you have more than 3 arguments originally");
  }
}

我需要将上面的代码翻译成Java

我需要在java中捕获最初的参数/参数并在其他函数中使用它们......

如您所见,根据 Java,参数可以具有不同的类型..

public void Func0(String sString1,int iInteger0,String sString2) {
  Object[] OrigArgs = func_get_args();//The arguments
  Func1(OrigArgs,1);
}
public void Func1(Object[] OriginalArgs,int AddedArg) {
  int NumFirstArgs = OriginalArgs.length;
  if (NumFirstArgs>3) {
    System.out.println("you have more than 3 arguments originally");
  }
}

谢谢,

最佳答案

如果您有像 Object... foo 这样的最后一个参数,那么 foo 将是所有可变参数的数组,即除非可变参数之外的所有“其余”参数。换句话说,您可以将函数声明为

public void Func0(String sString1, int iInteger0, String sString2, Object... more)

但是more将只包含第三个之后的参数

为了最接近地匹配您的原始代码,您可以这样做(sString1iInteger0sString2 不再是参数,如果需要,您必须手动提取它们):

public void Func0(Object... OrigArgs) {
  Func1(OrigArgs,1);
}
public void Func1(Object[] OriginalArgs,int AddedArg) {
  int NumFirstArgs = OriginalArgs.length;
  if (NumFirstArgs>3) {
    System.out.println("you have more than 3 arguments originally");
  }
}

关于Java 转换 func_get_args PHP、varargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17354913/

相关文章:

java - servlet 返回空白页

java - 解析 XML 仅获取注释和日期值

java - 如果在 Java 中将 varg 设置为 null,则获取 vargs 的类类型

java - 批量插入 MySQL 会导致 GC 开销和/或 Java 堆空间错误

java - Android JSONObject 说 "no value for name",而 "name"项肯定存在

php - 如何在 Amazon s3 SDK for PHP 中使用 get_object_list 方法编写 PCRE 正则表达式模式

php - 如何在 MAMP 中访问 PDO?

php - Doctrine 2 更新后刷新实体

c++ - 将可变参数模板粘合到可变参数函数

c - 在可变函数中提升整数