-1

最近在浏览各种程序时,我看到了以下代码:

protected Object doInBackground(Object... arg0)
{
    ....
    ....
    ....
}

我不明白的意义Object...

我从未见过...任何数据类型。

4

8 回答 8

6

它被称为可变参数或简单的 var-args,在 java 5 中引入。如果您的方法接受 var-args 作为参数,则可以将任意数量的参数传递给该方法。例如,下面的方法调用对于您的方法声明都将成功:

 doInBackground(new Object());
 doInBackground(new Object(), new Object());
 doInBackground(new Object(), new Object(), new Object());
 doInBackground(new Object(), new Object(), new Object(), new Object());

上一篇文章应该为您提供更多信息 我可以将数组作为参数传递给 Java 中具有可变参数的方法吗?

于 2013-04-03T10:35:42.477 回答
3

请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html中的“Arbitrary Number of Arguments”

这是手动创建数组的捷径(之前的方法可能使用可变参数而不是数组)。

您可以将任意数量的对象参数输入到doInBackground. 然后可以通过arg0您方法中的数组访问它们。arg0[0], arg0[1], 等等。

于 2013-04-03T10:35:58.757 回答
0

您可以将 Object 视为 java 中用户定义类的所有运行时实例的父级。“...”指的是 java 中的可变参数。这是可变参数的示例 。它本质上将被解释为数组。

于 2013-04-03T10:35:54.233 回答
0

Object 是 Java 中所有类的基本类型,除了原语。

这三个点表示可以传递任意数量的参数,也就是可变参数。

于 2013-04-03T10:36:03.270 回答
0

... 允许您提供多个称为varargs的参数。

doInBackground(1, "hello", "world");

这就是该MessageFormat.format方法的工作原理,它允许您指定格式,然后指定对象来填充该格式。

public static String format(String pattern,
                            Object... arguments);

//Usage
MessageFormat.format("hello {0}, I'm from {1}", "John", "Earth");
于 2013-04-03T10:36:59.277 回答
0

它是我们告诉可以发送任意数量的特定数据类型的参数的方式,而不是在函数 def 中写入“n”次。 检查这个。

于 2013-04-03T10:38:05.133 回答
0

这实际上是方法中的可变长度或参数。当您调用此方法时,您可以将 n 个 Object 类的对象传递给此方法,而 arg0 将是您的数组 ob 对象。它非常古老而且非常简单。没有其他的..

于 2013-04-03T10:39:28.980 回答
0

省略号或 (...) 称为 var-args。在这种情况下,它使该方法非常通用。它可以采用任何数量和任何类型的参数。

于 2013-04-03T10:39:31.190 回答