import java.util.ArrayList;
import java.util.List;
public class InterfaceTest {
static interface Rennen {
void run();
}
static interface Schwimmen {
void swim();
}
static class Hund implements Rennen, Schwimmen {
@Override
public void swim() {}
@Override
public void run() {}
};
static class Mensch implements Rennen, Schwimmen {
@Override
public void swim() {}
@Override
public void run() {}
};
static class MoeterWrapper<T extends Schwimmen & Rennen> implements Rennen, Schwimmen {
private T moeter;
MoeterWrapper(T moeter) {
this.moeter = moeter;
}
@Override
public void swim() {
moeter.swim();
}
@Override
public void run() {
moeter.run();
}
}
public static void main(String[] args) {
List<MoeterWrapper<?>> list = new ArrayList<>();
list.add(new MoeterWrapper<>(new Mensch()));
list.add(new MoeterWrapper<>(new Hund()));
for (MoeterWrapper<?> moeter : list) {
moeter.swim();
}
}
}