Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class VisitorDemoExtended {
- public static void main(final String[] args) {
- Car car = new Car(List.of(new Body(), new Engine(), new Tire()));
- car.accept(new CarElementPrintVisitorExtended());
- System.out.println("-------------------");
- car.accept(new CarElementPrintVisitor());
- }
- }
- interface CarElementExtended extends CarElement {
- void accept(CarElementVisitorExtended visitor);
- @Override
- default void accept(CarElementVisitor visitor) {
- if (visitor instanceof CarElementVisitorExtended) {
- accept((CarElementVisitorExtended) visitor);
- }
- }
- }
- class Tire implements CarElementExtended {
- public void accept(CarElementVisitorExtended visitor) {
- visitor.visit(this);
- }
- }
- interface CarElementVisitorExtended extends CarElementVisitor {
- @Override
- void visit(Body body);
- @Override
- void visit(Car car);
- @Override
- void visit(Engine engine);
- void visit(Tire tire);
- }
- class CarElementPrintVisitorExtended implements CarElementVisitorExtended {
- @Override
- public void visit(Body body) {
- System.out.println("Visiting body");
- }
- @Override
- public void visit(Car car) {
- System.out.println("Visiting car");
- }
- @Override
- public void visit(Engine engine) {
- System.out.println("Visiting engine");
- }
- @Override
- public void visit(Tire tire) {
- System.out.println("Visiting tire");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment