Java 可变参数 : a way to get back to the . ..-形式?

标签 java variadic-functions

我猜你有一个类,里面有一些老师:

public Foo(int i, String s);
public Foo(float fl, String s);
public Foo(String s, Bar b, boolean f);

现在,当您有以下 fn 时:

public Foo doSomething(Object… args)
{
    /*… do something before … */
    Foo foo = new Foo( ?!? );
    /*… do something after … */
    return foo;
}

应该如何调用正确的 c-tor?有没有办法将 args 转换回 ...-形式?

最佳答案

否 - 毕竟,其中可能有任何引用,包括空引用。

您必须根据构造函数签名的参数类型检查实际给出的值。

我认为这表明您可能不应该在这种情况下使用可变参数。您始终可以使用与构造函数相同的签名来重载该方法,并为之前/之后部分调用常见的帮助器方法...或者如果构造函数调用的时间并不重要,则全部执行 在普通方法中,除了构造:

public void doSomething(int i, String s)
{
    doSomethingHelper(new Foo(i, s));
}

关于Java 可变参数 : a way to get back to the . ..-形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408723/

相关文章:

java - E/AndroidRuntime : FATAL EXCEPTION: main PID: 19302 java. lang.RuntimeException:无法启动 Activity ComponentInfo

java - Java中的多线程: field not incrementing as expected

java - 小写枚举 Gson

c++可扩展的lambda函数分组在任意数量的 block 中

ios - 如何将 vararg 参数从 Kotlin 通用代码传递给 iOS 函数?

java - 如何使用 Maven 在 MANIFEST.MF 中为 JBoss AS 7 生成模块依赖项?

java - spark 返回错误 libsnappyjava.so : failed to map segment from shared object: Operation not permitted

c# - 为什么要使用 params 关键字?

c - 如何向 va_list 添加参数

c++ - 不同参数类型的可变参数模板函数的递归