![](/img/trans.png)
[英]Initializing an array in the constructor then executing it in the main method
[英]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
……如果这就是您要问的。
实际的解决方案是向构造函数添加a
和b
参数。
1 - 一个非纯 Java 解决方案可能是使用构造函数的字节码“四处走动”,以便它完成您“需要”做的事情。 但这太可怕了,可怕的解决方案往往会反过来咬你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.