首页 > 编程知识 正文

java构造函数的八种方法,构造函数默认参数

时间:2023-05-04 17:02:26 阅读:48730 作者:4642

这个问题已经有了最佳答案,请迅速访问这里。

可配置duplicate :

Java可选参数

在PHP中,我们知道在调用参数较少的函数时,要如下声明函数:

功能foo (int param 1,int param2='2' );

现在可以调用foo(2)将param2设置为2。

试图在Java构造函数中执行此操作,但似乎不可能。 有实现这个的方法吗? 还是只声明两个构造函数?

谢谢你!

我不熟悉PHP,为什么不在方法中声明param2?

这表示param2是一个可选参数,提供给定的值,否则提供值“2”

Java没有对构造函数或方法具有默认值的可选参数的概念。 你基本上处于过载状态。 但是,构造函数很容易链接,所以不需要重复代码。

公共foo (int param 1,int param2) )。

{

this.param1=param1;

this.param2=param2;

}

公共foo (int param1) )。

{

this (param 1,2 );

}

Java不支持默认参数。 要执行所需的操作,需要两个构造函数。

如果可能的默认值很多,则可以使用Builder模式使用setter的辅助对象。

例如

公共类foo {

私密金融字符串param 1;

私密金融字符串param 2;

私密foo (builder builder ) {

this.param1=builder.param1;

this.param2=builder.param2;

}

公共静态类构建器{

私有参数1=' defaultforparam1';

私有参数2=' defaultforparam2';

publicbuilderparam1(string param1) {

this.param1=param1;

返回时间;

}

publicbuilderparam2(string param1) {

this.param2=param2;

返回时间;

}

public Foo build () {

返回新福克斯(this;

}

}

}

这个可以让你说:

Foo myFoo=new Foo.Builder ().param1) ' myvalue ).build );

param2的默认值被设置。

虽然可以使用varargs进行模拟,但必须检查参数是否过多。

公共语音foo (int param 1,int . param2) )。

{

int param2_

(if(param2.length==0) ) ) ) ) ) ) ) )。

param2_=2

ELSEif(Para2.Length==1) ) ) ) ) ) ) )。

param2_=param2[0]

else

thrownewtoomanyargumentsexception (; //user提供的too many arguments,

//rest of the code

}

但是,这种方法不是一个好方法,所以建议使用重载。

可以将varargs用作可选参数。

公共类booyah

publicstaticvoidmain (字符串[ ] args ) {

woohoo(1;

woohoo (2,3 );

}

staticvoidwoohoo (要求输入,Integer. optional )。

Integer蓝色杯子;

if(optional.length==1) {

蓝色水杯=可选[0];

} else {

蓝色杯子=2;

}

system.out.println (请求的蓝色杯子);

}

}

另外,注意在int中使用Integer很重要。 Integer是原语int的包装,如果需要,可以将其与null进行比较。

在Java中,默认情况下设置为特定值的可选参数不可用。

最接近你说的是java varargs,它可以将任意数量的参数(同一类型)传递给方法。

你为什么要那样做?

但是,您可以:

公共语音(Int param1) )。

{

int param2=2;

//rest of code

}

或:

公共语音foo (int param 1,int param2) )。

{

//rest of code

}

公共语音(Int param1) )。

{

foo (param 1,2 );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。