第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中的匿名代碼塊

Java中的匿名代碼塊

明月笑刀無情 2019-08-13 14:41:34
Java中的匿名代碼塊Java中是否存在匿名代碼塊的實際用途?public static void main(String[] args) {     // in     {         // out     }}請注意,這不是關(guān)于命名塊,即name: {       if ( /* something */ )           break name;}
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

它們限制了變量范圍。

public void foo(){
    {
        int i = 10;
    }
    System.out.println(i); // Won't compile.}

但實際上,如果你發(fā)現(xiàn)自己使用了這樣一個代碼塊,那可能就是你想要將那個塊重構(gòu)為一個方法的跡象。


查看完整回答
反對 回復(fù) 2019-08-13
?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

通常最好使局部變量的范圍盡可能小。匿名代碼塊可以幫助解決這個問題。

我發(fā)現(xiàn)這對switch語句特別有用。考慮以下示例,沒有匿名代碼塊:

public String manipulate(Mode mode) {
    switch(mode) {
    case FOO: 
        String result = foo();
        tweak(result);
        return result;
    case BAR: 
        String result = bar();  // Compiler error
        twiddle(result);
        return result;
    case BAZ: 
        String rsult = bar();   // Whoops, typo!
        twang(result);  // No compiler error
        return result;
    }}

并使用匿名代碼塊:

public String manipulate(Mode mode) {
    switch(mode) {
        case FOO: {
            String result = foo();
            tweak(result);
            return result;
        }
        case BAR: {
            String result = bar();  // No compiler error
            twiddle(result);
            return result;
        }
        case BAZ: {
            String rsult = bar();   // Whoops, typo!
            twang(result);  // Compiler error
            return result;
        }
    }}

我認(rèn)為第二個版本更清晰,更容易閱讀。并且,它減少了在切換到聲明它們的情況下聲明的變量的范圍,根據(jù)我的經(jīng)驗,這是你想要99%的時間。

但要注意,它并沒有改變案件掉落的行為 - 你仍然需要記住包括breakreturn防止它!


查看完整回答
反對 回復(fù) 2019-08-13
  • 3 回答
  • 0 關(guān)注
  • 813 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號