今天在写Java项目的时候,因为之前C#用惯了,而且Java和C#很多地方都是相似的,所以自己以为Java也是可以支持方法参数指定默认值的,但是试了一下发现编译通不过。
上网一查才知道原来 Java 函数不支持参数默认值。
仔细想想,也是有道理的,比如下面的代码
public int add(int a) { // do something } public int add(int a, int b = 0) { // do something }
当调用 add 方法,只传入一个参数的时候,Java就不知道该调用哪个参数了,而且这么做的话会让函数的重载变得混乱,所以Java直接把参数默认值砍了。
那么我们要指定默认值怎么办呢?其实可以利用函数重载变相实现,就像下面这样:
public Date(int year, int month, int date) { this(year, month, date, 0, 0, 0); } public Date(int year, int month, int date, int hrs, int min, int sec) { cal = null; if (staticCal == null) makeStaticCalendars(); synchronized (staticCal) { staticCal.setTimeZone(TimeZone.getDefault()); staticCal.clear(); staticCal.set(year + 1900, month, date, hrs, min, sec); fastTime = staticCal.getTimeInMillis(); } }
本文查阅了下面这些资料:
https://www.zhihu.com/question/29891411
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。