這是合法的,這樣做在Java中:如何在Java中需要一個方法參數來實現多個接口?
void spew(Appendable x)
{
x.append("Bleah!\n");
}
我怎樣才能做到這一點(語法不合法):
void spew(Appendable & Closeable x)
{
x.append("Bleah!\n");
if (timeToClose())
x.close();
}
我想,如果有可能迫使呼叫者使用既是對象可附加和可關閉,無需特定類型。有多種標準類別可以做到這一點,例如但是BufferedWriter,爲PrintStream等
如果我定義我自己的接口
interface AppendableAndCloseable extends Appendable, Closeable {}
因爲實現可追加和關閉,沒有實現我的接口AppendableAndCloseable(除非我不明白的標準類,將無法正常工作Java以及我認爲我做...空接口仍然增加超越其超接口以上的唯一性)。
我能想到的最接近的是做下列之一:
選擇一個接口(例如可追加),然後使用運行測試,以確保該參數是
instanceof
別人。下行:在編譯時沒有發現問題。需要多個參數(捕獲編譯時的正確性,但看起來學究氣):
void spew(Appendable xAppend, Closeable xClose) { xAppend.append("Bleah!\n"); if (timeToClose()) xClose.close(); }
這是肯定缺乏。但是你的問題到底是什麼? – NawaMan