package visiteur;
import java.lang.reflect.Method;


@Exercice(8)
public abstract class AbstractVisitor implements Visitor {

	public void visit(Expression e) {
		Class<?> c=e.getClass();
		try{
			Method m=this.getClass().getMethod("visit", c);
			m.invoke(this, e);
		}catch(Exception ex){
			//Ne survient que s'il manque une methode
			//specifique dans un visiteur
			throw new RuntimeException("visit n'existe pas pour tous les types");
		}
	}

}
