成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 方法的參數(shù)可以有默認(rèn)值嗎?

freewolf / 1775人閱讀

摘要:方法的參數(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è)定了一些模板,

為什么要?jiǎng)?chuàng)建一個(gè)StudentBuilder

而不是直接這樣寫:

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

相關(guān)文章

  • Java貓說】關(guān)于Java方法及傳參一些問題

    摘要:我可不可以忽略返回值并未要求一定要處理返回值。你可以調(diào)用返回非類型的方法而不必理會(huì)返回值,這代表你要的是方法的行為而不是返回值,你可以不指派返回值。 閱讀本文約1.2分鐘 1、如果想要傳入的參數(shù)是對(duì)象而不是primitive主數(shù)據(jù)類型會(huì)怎樣? 在Java中所傳遞的所有東西都是值,但此值是變量所攜帶的值。還有,引用對(duì)象的變量所攜帶的是遠(yuǎn)程控制而不是對(duì)象本身,若你對(duì)方法傳入?yún)?shù),實(shí)際上傳...

    woshicixide 評(píng)論0 收藏0
  • CSS基礎(chǔ)篇--css reset重置樣式那么重要嗎?

    摘要:在以前寫代碼的時(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,...

    rockswang 評(píng)論0 收藏0
  • 【譯】Java 核心內(nèi)容相關(guān)面試題

    摘要:能否聲明一個(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...

    sunny5541 評(píng)論0 收藏0
  • 100 個(gè)基本 Python 面試問題第二部分(21-40)

    摘要:為我們提供了許多內(nèi)置函數(shù),例如并提供了創(chuàng)建用戶定義函數(shù)的能力。會(huì)將該變量視為函數(shù)級(jí)作用域中的局部變量。回到目錄中函數(shù)的用途是什么是中的內(nèi)置函數(shù)之一。請(qǐng)注意,這種類型的參數(shù)語法不允許將命名參數(shù)傳遞給函數(shù)。函數(shù)接受一個(gè)稱為的可選參數(shù)。 ...

    2450184176 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<