亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Java中的WITH語句

Java中的WITH語句

嗶嗶one 2019-12-04 14:44:44
在VB.NET中,使用WITH命令可以省略對象名稱,而僅訪問所需的方法和屬性。例如:With foo   .bar()   .reset(true)   myVar = .getName()End WithJava中是否有這樣的語法?謝謝!
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

在Java中,最接近這樣做的方法可能是構造過程中的雙花括號習慣用法。


Foo foo = new Foo() {{

    bar();

    reset(true);

    myVar = getName(); // Note though outer local variables must be final.

}};

另外,this可以將返回的方法鏈接在一起:


myName =

    foo

        .bar()

        .reset(true)

        .getName();

哪里bar和reset方法返回this。


但是,想要這樣做往往表示該對象沒有足夠豐富的行為。嘗試將其重構為被調用的類。也許有不止一個班試圖脫身。


查看完整回答
反對 回復 2019-12-04
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

使用Java 8 lambda可以使您非常接近,但缺點是無法修改局部變量。


聲明此方法:


static <T> void with(T obj, Consumer<T> c) {

    c.accept(obj);

}

因此,您可以使用:


Window fooBarWindow = new Window(null);


String mcHammer = "Can't Touch This";


with(fooBarWindow, w -> {

     w.setAlwaysOnTop(true);

     w.setBackground(Color.yellow);

     w.setLocation(300, 300);


     w.setTitle(mcHammer); // can read local variables

     //mcHammer = "Stop!"; // won't compile - can't modify local variables

});

使用匿名類也可以這樣做,但不是很干凈。


查看完整回答
反對 回復 2019-12-04
  • 3 回答
  • 0 關注
  • 2183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號