繁体   English   中英

使用 main 方法初始化构造函数的值

[英]Initializing values to constructor using main method

如何初始化构造函数中的值,这些值不能通过对象传递,而我们可以从 main 方法传递它们?

  class ex
    {
        int a,b;
        ex()
        {
            this.a=b;  
        }

        public static void main(String args[])
        {
            //here we pass the values to that consructor ex
            ex obj=new ex();
        }
    }

创建一个接受两个参数的重载构造函数。

public ex(int a, int b) {
   this.a = a;
   this.b = b;
}

public static void main(String...args){
 ex obj = new ex(1,2)
}

值不能通过对象传递,我们应该从 main 方法传递

如果我理解正确,您想从 main 方法传递参数并在构造函数中初始化它们,唯一要做的就是在创建对象时将它们传递给构造函数

如果不想在声明新对象时显示初始化值,可以从构造函数调用 setter 方法。

请参阅以下代码以供参考:


class Testcl {

int a,b; Testcl(){ setValues(1,2); } private void setValues(int a, int b){ this.a=a; this.b=b; } public static void main(String [] args){ Testcl test = new Testcl(); System.out.println("a : " + test.a + " b : " + test.b); }}

首先要说的是,这确实“有效”……就其编译和执行而言,它没有任何错误。

    int a,b;  // default initialized to 'zero'

    ex() {
        this.a=b;  // assigns 'zsro' to a.
    }

但当然,它没有取得任何成就……因为此时a已经zero

现在main方法可以在构造函数返回a和/或b字段分配一些东西。 但是在调用构造函数之前,没有办法(在纯 Java 1 中)将一些非零值放入b ……如果这就是您要问的。

实际的解决方案是向构造函数添加ab参数。


1 - 一个非纯 Java 解决方案可能是使用构造函数的字节码“四处走动”,以便它完成您“需要”做的事情。 但这太可怕了,可怕的解决方案往往会反过来咬你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM