java构造函数排序
我正在做一个项目,我想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序:
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");
像构造器中的顺序?谢谢
# 1 楼答案
它很重要,就像它对任何方法调用都很重要一样。如果你有这样的东西呢:
如果是的话
编译器怎么知道你实际上是想把
a
设为2,把b
设为1?唯一一种情况是,如果所有的参数都是不同类型的,编译器可能会破译您的意图——在大多数情况下,编译器不可能知道您的意图即使所有的类型都是不同的,编译器怎么知道你故意以不同的顺序传递它们呢?据它所知,它正在把你从一个错误中拯救出来
请注意,其他一些语言,如C#,确实允许您以与指定不同的顺序传递参数,但您必须对它们进行标记,以便编译器可以知道哪个是哪个
# 2 楼答案
是的,顺序很重要,但您可以“重载”,这意味着添加另一个参数列表颠倒的构造函数,如
。。如您所见,您可以调用内部的第一个构造函数,java将找到签名使用的正确版本
# 3 楼答案
你可以做:
但并非如此:
因为当你调用任何方法时,你需要尊重参数顺序。 实际上,如果你愿意,你可以这样做(你的代码将被编译和执行),但之后你将进行值切换
# 4 楼答案
是的。。。你必须尊重参数的顺序,因为构造函数需要一个整数作为第一个参数,一个字符串作为第二个参数;任何与此不同的东西都可能会抛出错误