public interface Animal {
void makeSound();
}
public class Cat implements Animal {
@Override
public void makeSound() {
}
}
public class Dog implements Animal {
@Override
public void makeSound() {
}
}
@MultiType(of = Animal.class, with = {Cat.class, Dog.class})
public class AnimalHandler {
@MultiMethod
public void handleCat(Cat cat) {
}
@MultiMethod
public void handleDog(Dog dog) {
}
}
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
}