我正在研究一个项目,我很想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序:
public class Test{
int t3;
String h;
Test(int t1, String t2){
t3 = t1;
String h = t2;
}
}
我做的很重要:
Test t4 = new Test( "hello", 6);
而不是
Test t4 = new Test(6, "hello");
喜欢构造函数中的顺序?谢谢!
答案 0 :(得分:1)
你可以这样做:
public class Test{
int t3;
String h;
Test(int t1, String t2){
h = t2;
t3 = t1;
}
}
但不是那样:
Test t = new Test(t2,t1);
因为当您调用任何方法时,您需要尊重参数顺序。 如果你想要你可以做到这一点(你的代码将编译并执行),那么你将有价值切换。
答案 1 :(得分:1)
是的......您必须尊重参数的顺序,因为构造函数将期望Integer作为第一个参数而String作为第二个参数;任何不同的东西都可能引发错误。
答案 2 :(得分:1)
是的,订单很重要,但你可以"重载",这意味着添加另一个反转参数列表的构造函数。
Test(String t2, int t1){
this.Test(t1,t2);
}
..如您所见,您可以调用内部的第一个构造函数,java将找到签名使用的正确版本
答案 3 :(得分:0)
重要的是,就像任何方法调用一样重要。如果你有这样的事情怎么办:
public SomeClass(int a, int b)...
如果你做了
new SomeClass(1, 2);
编译器怎么知道你实际意味着a
为2而b
为1?如果您的所有参数都具有不同的类型,那么编译器可能会破译您的意图的唯一情况就是这一点 - 在大多数情况下,编译器可能无法知道您打算做什么。
即使所有类型的 都不同,编译器如何知道您是故意以不同的顺序传递它们的呢?尽管如此,它知道它可以帮助你避免错误。
请注意,其他一些语言(如C#)允许您以不同于您指定的顺序传递参数,但您必须对它们进行标注,以便编译器知道哪个是哪个。