Java ile bunu yapmak yasal: Ben bu (değil yasal sözdizimi) nasıl yapabilirimBirden çok arabirimi uygulamak için Java'da bir yöntem bağımsız değişkenine nasıl gerek duyarım?
void spew(Appendable x)
{
x.append("Bleah!\n");
}
:
void spew(Appendable & Closeable x)
{
x.append("Bleah!\n");
if (timeToClose())
x.close();
}
mümkünse her ikisi nesneleri kullanmak arayanları zorlamak istediğim Belirli bir tür gerektirmeden Uygulanabilir ve Kapatılabilir. Bunu yapan birçok standart sınıf vardır, örn. BufferedWriter, PrintStream vb
Ben kendi arayüzü tanımlarsanız
anlamıyorum sürece benim arabirimini AppendableAndCloseable (uygulamak gerekmez appendable kapanan uygulamak standart sınıflar beri çalışmazinterface AppendableAndCloseable extends Appendable, Closeable {}
Java'nın yanı sıra, bence ... boş arayüzler, süper-arayüzlerinin üstünde ve ötesinde bir teklik katarlar).
Aklıma yakın aşağıdakilerden birini yapmak için:
bir arabirim (örneğin appendable) almak ve bağımsız değişken bir
instanceof
diğerleri sağlamak için çalışma zamanı testleri kullanılabilir. Downside: Sorun derleme zamanında yakalanmadı.birden fazla argüman gerektirir (yakalar doğruluğunu derleme zamanı ama salakça görünüyor):
void spew(Appendable xAppend, Closeable xClose) { xAppend.append("Bleah!\n"); if (timeToClose()) xClose.close(); }
Bu kesinlikle eksiktir. Ama sorunuz tam olarak nedir? – NawaMan