1. 程式人生 > >用代碼塊在new對象時set屬性

用代碼塊在new對象時set屬性

{} out oca new datetime lin 重寫 appid 用法

看到這樣一種用法,很方便

request.setRequestHead(new RequestHeadType() {{
     setRequestor("Online");
     setRequestType("Hotel.Order.ProcessService.SelfService.ModifyInvoice");
     setClientAppID("100002669");
     setTimeStamp(LocalDateTime.now().toString());
     setRequestID(UUID.randomUUID().toString());
     setServerFrom(
"test"); }});

剛開始兩個{{}}沒有看懂

與下面的情況很類似:

public class test11 {

    public static void main(String[] args) {
        new test11("321");
    }

    static {
        System.out.println("test11.static initializer");
    }

    {
        setName("123");
        System.out.println(this.name);
    }

    
public test11(String name) { this.name = name; System.out.println("test11." + this.name); } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

輸出結果:

test11.static initializer
123 test11.321

第一個大括號是方法的重寫

第二個大括號是重寫的代碼塊,比構造方法還先執行,並且可調用類的set方法

用代碼塊在new對象時set屬性