2015-06-16 136 views
1

假設我有一個方法Foo createFoo()。我需要調用Foo createFoo()返回的對象上的方法boolean Foo.bar(),然後將該對象傳遞給方法void baz(Foo someFoo)。有沒有辦法在一行中做到這一點?將對象傳遞給函數時可以調用對象的方法嗎?

如果我沒有需要調用boolean Foo.bar(),我可以做

baz(createFoo()); 

,但我不能這樣做,因爲它不叫Foo.bar()。

我還不能做到這一點:

baz(createFoo().bar()); 

,因爲這會傳遞到巴茲布爾從Foo.bar(),而不是實際的Foo對象返回。

+5

'美孚富= createFoo(); foo.bar(); baz(foo);'每行有一條指令通常比有3條指令要好。它更容易閱讀,並且更容易調試。 –

+5

如果您需要調用該方法,則需要調用該方法。如果你想要一個流暢的界面,然後讓'bar'返回'this'。 –

回答

5

不,如果你需要bar返回boolean你將不得不使用

Foo foo = createFoo(); 
foo.bar(); 
baz(foo); 

如果你發現自己一遍又一遍地重複這個模式,你當然也可以創建一個便捷方法

void barAndBaz(Foo foo) { 
    foo.bar(); 
    baz(foo); 
} 

和做

barAndBaz(createFoo()); 
+0

謝謝。只是很好奇這是否可能,因爲我只有大約一年的Java經驗。 – vijrox

+0

不客氣。我認爲這是一種常見的情況。我經常遇到這樣的事情,比如'Component c = new Component(...); c.setProperty(...);添加(c);'當做gui編程時,或者'Thread t = new Thread(){...}; t.setDaemon(真);返回t;'等 – aioobe