2013-02-15 55 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

相关问题