为什么在Java1.5中实现了foo(Object…obj)?
作为两个功能为什么在Java1.5中实现了foo(Object…obj)?,java,jakarta-ee,Java,Jakarta Ee,作为两个功能 foo(Object... obj) { for(int i=0;i<obj.length;i++) System.out.println(obj[i]); } 及 并且可以进行函数调用 fooobj,str,1 foo{obj,str,1} 分别执行相同的函数,后者从java一开始就存在,那么为什么对象。。。obj已实施 哪一个更好?为什么?这不起作用: foo({obj, str, 1}); 您需要执行以下操作: foo(new Object[] {obj, str,
foo(Object... obj)
{
for(int i=0;i<obj.length;i++)
System.out.println(obj[i]);
}
及
并且可以进行函数调用
fooobj,str,1
foo{obj,str,1}
分别执行相同的函数,后者从java一开始就存在,那么为什么对象。。。obj已实施
哪一个更好?为什么?这不起作用:
foo({obj, str, 1});
您需要执行以下操作:
foo(new Object[] {obj, str, 1});
这已经够尴尬的了,我非常感谢varargs语法。从功能上讲,它们完全相同是正确的。这不起作用:
foo({obj, str, 1});
您需要执行以下操作:
foo(new Object[] {obj, str, 1});
这已经够尴尬的了,我非常感谢varargs语法。从功能上讲,它们是相同的,这是正确的。。。。函数是一种语法,它们提供了更方便的语法,没有大括号,也不会改变其他任何东西,包括性能。编译器在幕后也会做同样的事情,让您可以使用更方便的语法。。。。函数是一种语法,它们提供了更方便的语法,没有大括号,也不会改变其他任何东西,包括性能。编译器在幕后做同样的事情,让您可以使用更方便的语法。加上一个语法糖。。。所以简单地说,它只是意味着它可以让你的代码变得更好。以下是一个例子:
public class App {
public static void main(String[] args) {
Object obj = new Object();
String str = "test";
varArgsFoo(obj, str, 1); //Don't have to use an Array...
varArgsFoo(new Object[]{obj, str, 1}); //But you can if it suits you.
arrayFoo(new Object[]{obj, str, 1}); // Compiles, but you MUST pass in an Array.
arrayFoo(obj, str, 1); // Won't compile!!! Varargs won't work if an array is expected.
}
/**
* Can use simply a variable number of arguments, or an array whatever you like.
* @param obj
*/
static void varArgsFoo(Object... obj) {
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
}
/**
* Must use an array, varargs (the ... notation) won't work.
*
* @param obj
*/
static void arrayFoo(Object[] obj) {
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
}
}
加上一个语法糖。。。所以简单地说,它只是意味着它可以让你的代码变得更好。以下是一个例子:
public class App {
public static void main(String[] args) {
Object obj = new Object();
String str = "test";
varArgsFoo(obj, str, 1); //Don't have to use an Array...
varArgsFoo(new Object[]{obj, str, 1}); //But you can if it suits you.
arrayFoo(new Object[]{obj, str, 1}); // Compiles, but you MUST pass in an Array.
arrayFoo(obj, str, 1); // Won't compile!!! Varargs won't work if an array is expected.
}
/**
* Can use simply a variable number of arguments, or an array whatever you like.
* @param obj
*/
static void varArgsFoo(Object... obj) {
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
}
/**
* Must use an array, varargs (the ... notation) won't work.
*
* @param obj
*/
static void arrayFoo(Object[] obj) {
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
}
}
这个问题与这个问题相似