有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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");

像构造器中的顺序?谢谢


共 (4) 个答案

  1. # 1 楼答案

    它很重要,就像它对任何方法调用都很重要一样。如果你有这样的东西呢:

    public SomeClass(int a, int b)...
    

    如果是的话

    new SomeClass(1, 2);
    

    编译器怎么知道你实际上是想把a设为2,把b设为1?唯一一种情况是,如果所有的参数都是不同类型的,编译器可能会破译您的意图——在大多数情况下,编译器不可能知道您的意图

    即使所有的类型都是不同的,编译器怎么知道你故意以不同的顺序传递它们呢?据它所知,它正在把你从一个错误中拯救出来

    请注意,其他一些语言,如C#,确实允许您以与指定不同的顺序传递参数,但您必须对它们进行标记,以便编译器可以知道哪个是哪个

  2. # 2 楼答案

    是的,顺序很重要,但您可以“重载”,这意味着添加另一个参数列表颠倒的构造函数,如

    Test(String t2, int t1){
     this.Test(t1,t2);
    }
    

    。。如您所见,您可以调用内部的第一个构造函数,java将找到签名使用的正确版本

  3. # 3 楼答案

    你可以做:

    public class Test{
      int t3;
      String h;
      Test(int t1, String t2){
        h = t2;
        t3 = t1;
        }
      }
    

    但并非如此:

    Test t = new Test(t2,t1);
    

    因为当你调用任何方法时,你需要尊重参数顺序。 实际上,如果你愿意,你可以这样做(你的代码将被编译和执行),但之后你将进行值切换

  4. # 4 楼答案

    是的。。。你必须尊重参数的顺序,因为构造函数需要一个整数作为第一个参数,一个字符串作为第二个参数;任何与此不同的东西都可能会抛出错误