2013-02-15 22 views
5

Bir yöntemin, belirli bir sınıfı, bunun için özel bir sınıf bildirmeden belirli bir arabirimi uygulayan belirli bir sınıfla aynı zamanda nasıl bildirilmesi gerektiği açıklanır.
ImageX sınıfına sahip olduğumu ve ayrıca etiketlendiğini de belirttim. Dolayısıyla, Tagging arayüzünü uygulayan yalnızca ImageX örneklerini alması gereken başka bir sınıf veya yöntem oluşturmam gerekiyor. Böyle bir yöntem nasıl bildirilir?Yöntem parametresi, belirli arabirimi uygulayan belirli bir sınıfın objesi olmalıdır.

private void someMethod (ImageX<Tagging> obj){} 

gibi bir şey, ancak bu elbette doğru değildir. Evet, gerekli arayüzü uygularsa objeyi kontrol edebilirdim ama bu parametrelerin kontrolünü istiyorum. Ve eğer bir yöntem değil, bir kurucu ise ...
Ben jenerikler hakkında sorabilir miyim?

Sen yöntem jenerik yapabilir ve yalnızca bir tür kavşak kullanarak bir ImageX'i ve Etiketleme hem nesneleri kabul edebilir
+1

Yani bir' Tagging' arayüze sahip olmak istiyorum ve '' Tagging'ı uygulamamış * olan sınıf 've' ImageX' örneklerini kabul eden bir yönteme sahip olmak istersiniz, ancak sadece '* Etiketleme' özelliğini de uygularlarsa? Bunu yapmak istemek, refactor'a ihtiyaç olduğunu gösterir. –

+0

Evet, onu istiyorum. Bu, android hakkında ve gerekli bazı arayüzleri uygulayan bir etkinlik. Ama her aktivite bunu yapmıyor ve sadece bunun için alt sınıfı faaliyet göstermek istemedim. – Stan

+0

@ stan: Anladım. Neyse ki, assylias cevabı vardı (ve oldukça güzel bir de). –

cevap

10

: ayrı bir `ImageX

private <T extends ImageX & Tagging> void someMethod (T obj){} 
+0

+1 Niiiiice. Bundan kaçınmak istiyorum ama buna sahip olmak güzel. (Genel yöntemler sadece flippin 'havalıdır.) Herkes bunu bir eylemde görmek isterse: http://pastie.org/6179036 –

+0

@ T.J.Crowder bu soruya cevap verir, ancak işaret ettiğin gibi en iyi yaklaşım değildir! – assylias

İlgili konular