摘要:方法的參數(shù)可以有默認(rèn)值嗎例如回答不支持這種特性,如果你真的有需求,你可以通過方法的重載間接的支持默認(rèn)的參數(shù)值使用工廠模式重載這個(gè)很簡(jiǎn)單這樣就相當(dāng)于給一個(gè)默認(rèn)的參數(shù)值。但是有的時(shí)候如果參數(shù)太多,就不適合了。
Java 方法的參數(shù)可以有默認(rèn)值嗎?
例如
void method(String p1, int p2, bool p3=false);回答
Java不支持這種特性,
如果你真的有需求,你可以
通過方法的重載間接的支持默認(rèn)的參數(shù)值
使用工廠模式
重載這個(gè)很簡(jiǎn)單
void method(String p1, int p2, bool p3){ // .... }; void method(String p1, int p2){ bool p3 = false; // ... };
這樣就相當(dāng)于給p3一個(gè)默認(rèn)的參數(shù)值。
但是有的時(shí)候如果參數(shù)太多,就不適合了。
就要用到下面的工廠方法
public class StudentBuilder { private String _name; private int _age = 14; // this has a default private String _motto = ""; // most students don"t have one public StudentBuilder() { } public Student buildStudent() { return new Student(_name, _age, _motto); } public StudentBuilder name(String _name) { this._name = _name; return this; } public StudentBuilder age(int _age) { this._age = _age; return this; } public StudentBuilder motto(String _motto) { this._motto = _motto; return this; } }
Student s1 = new StudentBuilder().name("Eli").buildStudent(); Student s2 = new StudentBuilder() .name("Spicoli") .age(16) .motto("Aloha, Mr Hand") .buildStudent();
在上面的示例中,我們沒有直接
的創(chuàng)建一個(gè)Student對(duì)象,而是
通過StudentBuilder來創(chuàng)建一個(gè)工廠,
然后在這個(gè)工廠中預(yù)先設(shè)定了一些模板,
而不是直接這樣寫:
Student s1 = new Student().age(16)
這樣寫有兩個(gè)壞處
實(shí)例化有些字段沒有初始化,可能存在
安全隱患
很多時(shí)候,我們創(chuàng)建一個(gè)Student之后,并不希望他有一個(gè).age()方法,這個(gè)方法可能會(huì)被濫用。
收錄于 https://github.com/fish56/Jav...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73819.html
摘要:我可不可以忽略返回值并未要求一定要處理返回值。你可以調(diào)用返回非類型的方法而不必理會(huì)返回值,這代表你要的是方法的行為而不是返回值,你可以不指派返回值。 閱讀本文約1.2分鐘 1、如果想要傳入的參數(shù)是對(duì)象而不是primitive主數(shù)據(jù)類型會(huì)怎樣? 在Java中所傳遞的所有東西都是值,但此值是變量所攜帶的值。還有,引用對(duì)象的變量所攜帶的是遠(yuǎn)程控制而不是對(duì)象本身,若你對(duì)方法傳入?yún)?shù),實(shí)際上傳...
摘要:在以前寫代碼的時(shí)候,一般都會(huì)在里添加重置樣式,其內(nèi)容如下但是最近在網(wǎng)上看了看網(wǎng)絡(luò)文章,也感覺有些重置是沒有用的。當(dāng)然重置的優(yōu)點(diǎn),缺點(diǎn)都不說了,估計(jì)心里都非常有數(shù)的,還是要根據(jù)實(shí)際項(xiàng)目來。后來主管給我推薦了一款替代重置的替代方案,那就是用。 在以前寫html代碼的時(shí)候,一般都會(huì)在head里添加重置樣式reset.css,其內(nèi)容如下: @charset utf-8; html, body,...
摘要:能否聲明一個(gè)內(nèi)容為空的接口可以。能否將接口聲明為不允許,這樣做會(huì)導(dǎo)致編譯錯(cuò)誤。當(dāng)異常沒有被捕獲時(shí),會(huì)發(fā)生什么當(dāng)前線程所在的線程組會(huì)執(zhí)行一個(gè)叫的方法,最后程序會(huì)異常退出。非靜態(tài)內(nèi)部類可以使用哪些修飾符非靜態(tài)內(nèi)部類可以使用或修飾符。 原文地址 http://www.instanceofjava.com/2014/12/core-java-interview-questions.html 1...
摘要:為我們提供了許多內(nèi)置函數(shù),例如并提供了創(chuàng)建用戶定義函數(shù)的能力。會(huì)將該變量視為函數(shù)級(jí)作用域中的局部變量。回到目錄中函數(shù)的用途是什么是中的內(nèi)置函數(shù)之一。請(qǐng)注意,這種類型的參數(shù)語法不允許將命名參數(shù)傳遞給函數(shù)。函數(shù)接受一個(gè)稱為的可選參數(shù)。 ...
閱讀 2376·2023-04-25 20:07
閱讀 3313·2021-11-25 09:43
閱讀 3671·2021-11-16 11:44
閱讀 2538·2021-11-08 13:14
閱讀 3186·2021-10-19 11:46
閱讀 903·2021-09-28 09:36
閱讀 2998·2021-09-22 10:56
閱讀 2382·2021-09-10 10:51