实现两个接口所需的通用

时间:2016-10-11 12:19:23

标签: java generics

我有几个接口,比如

interface CanFly{ .. }
interface CanRun{ .. }

和许多实现(由其他人完成)

class Dog implements CanFly{ .. }
class Duck implements CanFly, CanRun{ .. }

现在在某些时候我需要使用一个泛型,它需要实现两个接口的类型。

 class FlyAndRunHandler <ANIMAL extends CanFly AND CanRun>{
    void performAction(ANIMAL animal){
       animal.fly();
       animal.run();
    }
 }

在Scala中,它看起来像ANIMAL extends CanFly with CanRun。有没有办法在Java中存档它。如果需要,我可以编写其他接口,但无法将它们添加到动物类中。

1 个答案:

答案 0 :(得分:3)

您可以Multiple Bounds使用<T extends CanFly & CanRun>

注意:将来如果你想要一个类和CanFly & CanRun一起添加一个类,那么请确保将类放在开头,如<T extends className & CanFly & CanRun>,否则会引发异常