2013-02-15 107 views
5

如何聲明一個方法的參數必須是同一時間某個實現某個接口的類而不爲此聲明一個特殊的類?
假設我已經聲明瞭ImageX類,並且還聲明瞭接口標記。所以我需要創建一些其他的類或方法,它只接收實現Tagging接口的ImageX實例。如何聲明這樣的方法?像方法參數必須是實現某個接口的某個類的obj

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

但這當然是不正確的。是的,我可以檢查obj是否實現了所需的接口,但我希望檢查參數。而如果它不是某種方法,而是一個構造函數...
我在問泛型可能嗎?

+1

所以,你想有一個'Tagging'接口,並單獨的'ImageX的'不*執行'標記'的類,然後你想有一個方法來接受'ImageX'的實例,但是隻有當它們*也實現了'標記'時,我建議想要這樣做表示需要重構。 – 2013-02-15 16:46:11

+0

是的,我想要它。這是關於android和類是活動,它實現了一些需要的接口。但並不是每一個活動都會這樣做,我不想爲此活動進行子類化。 – Stan 2013-02-18 19:26:07

+0

@ stan:我明白了。幸運的是,assylias有答案(而且也很酷)。 – 2013-02-18 22:03:13

回答

10

可以使該方法的通用,並只接受通過使用一種類型的路口都是一個ImageX和一個標記對象:

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

+1 Niiii​​ice。我想避免它,但很高興擁有它。 (通用方法只是flippin'酷。)如果有人想看到它的行動:http://pastie.org/6179036 – 2013-02-15 16:51:11

+0

@ T.J.Crowder它回答這個問題,但它不一定是你指出的最好的方法! – assylias 2013-02-15 16:52:40

相關問題