2012-07-25 56 views
-1

我可以有一個setSource()二傳手有兩個版本,兩個不同的參數類型,即setSource(InputStream)setSource(TargetDataLine)對於不同類型的Javabeans約定一個字段?

在內部我保留Object字段的值和基於RTTI的分派處理,但我不知道像Spring這樣的bean類庫是否會優雅地接受這樣的setter?即我能否將不同類型的值放入一個source bean字段中?

+0

你嘗試一下嗎?發生了什麼? – 2012-07-25 11:46:48

+0

我不告訴你,哦,偉大的大腦:) – 2012-07-25 12:12:11

回答

2

這並不似乎真的正確。 getSource()返回什麼?一個Object?如果是這樣,我建議你的setSource()接受Object

顯然,這似乎太「通用」,我不知道如果這個問題表明你的造型是不正確的,你需要兩個專門的子類處理不同源類型。

如果不這樣做,爲什麼不明確,並有setStreamSource()/setTargetDataLineSource()與正確的類型,並強制設置一個或另一個,但不是兩個(但我仍然認爲專業化的路要走,但是)。

+0

是的,我想絕對是喜歡你,包括問題和可能的解決方案。但問題是「如果」。它會起作用嗎?附:糟糕的設計不是我的,而是Sun/Oracle的,因爲他們做了類似的類型無關。 – 2012-07-25 12:08:48

+0

如果?我懷疑(因爲JavaBean的場合,一個*約定*),這將取決於實施 – 2012-07-25 12:10:04

+0

這也意味着,豆想法賠償多態性:) – 2012-07-25 12:10:28

相關問題