2016-10-11 1 views
4

Ich habe mehrere Schnittstellen wieGenerisches die erforderlich ist, zwei Schnittstellen zu implementieren

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

und viele Implementierungen (von anderen gemacht)

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

Jetzt irgendwann muss ich eine generische verwenden Dies erfordert Typen, die zwei Schnittstellen implementieren.

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

In Scala würde es wie ANIMAL extends CanFly with CanRun aussehen. Gibt es eine Möglichkeit, dies in Java zu archivieren? Bei Bedarf könnte ich zusätzliche Schnittstellen schreiben, aber es gibt keine Möglichkeit, sie den Tierklassen hinzuzufügen.

+2

könnte erhöhen sei das, was du suchst http://stackoverflow.com/questions/745756/java-generics-wildcarding-with-multiple-classes – Ash

Antwort

3

können Sie Multiple Bounds wie <T extends CanFly & CanRun>

Hinweis verwenden: in Zukunft, wenn Sie eine Klasse zusammen mit CanFly & CanRun dann stellen Sie sicher, setzen die Klasse am Anfang wie <T extends className & CanFly & CanRun> sonst hinzufügen möchten wird eine Ausnahme

Verwandte Themen