Module java.compiler
Package javax.lang.model.element

## Interface ModuleElement.DirectiveVisitor<R,​P>

Type Parameters:
  `R` - the return type of this visitor's methods. Use `Void` for visitors that do not need to return results.
  `P` - the type of the additional parameter to this visitor's methods. Use `Void` for visitors that do not need an additional parameter.

Enclosing interface:
  ModuleElement

    public static interface ModuleElement.DirectiveVisitor<R,​P>

A visitor of module directives, in the style of the visitor design pattern. Classes implementing this interface are used to operate on a directive when the kind of directive is unknown at compile time. When a visitor is passed to a directive's `accept` method, the `visitXyz` method applicable to that directive is invoked.

Classes implementing this interface may or may not throw a `NullPointerException` if the additional parameter `p` is `null`; see documentation of the implementing class for details.

WARNING: It is possible that methods will be added to this interface to accommodate new, currently unknown, language structures added to future versions of the Java™ programming language. Methods to accommodate new language constructs will be added in a source compatible way using default methods.

Since:
  9

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`default R` `visit​(ModuleElement.Directive d)` Visits any directive as if by passing itself to that directive's `accept` method and passing `null` for the additional parameter.
`default R` `visit​(ModuleElement.Directive d, P p)` Visits any directive as if by passing itself to that directive's `accept` method.
`R` `visitExports​(ModuleElement.ExportsDirective d, P p)` Visits an `exports` directive.
`R` `visitOpens​(ModuleElement.OpensDirective d, P p)` Visits an `opens` directive.
`R` `visitProvides​(ModuleElement.ProvidesDirective d, P p)` Visits a `provides` directive.
`R` `visitRequires​(ModuleElement.RequiresDirective d, P p)` Visits a `requires` directive.
`default R` `visitUnknown​(ModuleElement.Directive d, P p)` Visits an unknown directive.
`R` `visitUses​(ModuleElement.UsesDirective d, P p)` Visits a `uses` directive.

### Method Detail

#### visit

    default R visit​(ModuleElement.Directive d)

Visits any directive as if by passing itself to that directive's `accept` method and passing `null` for the additional parameter.

Implementation Requirements:
  The default implementation is `d.accept(v, null)`.
Parameters:
  `d` - the directive to visit
Returns:
  a visitor-specified result

#### visit

    default R visit​(ModuleElement.Directive d,
                    P p)

Visits any directive as if by passing itself to that directive's `accept` method.

Implementation Requirements:
  The default implementation is `d.accept(v, p)`.
Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitRequires

    R visitRequires​(ModuleElement.RequiresDirective d,
                    P p)

Visits a `requires` directive.

Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitExports

    R visitExports​(ModuleElement.ExportsDirective d,
                   P p)

Visits an `exports` directive.

Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitOpens

    R visitOpens​(ModuleElement.OpensDirective d,
                 P p)

Visits an `opens` directive.

Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitUses

    R visitUses​(ModuleElement.UsesDirective d,
                P p)

Visits a `uses` directive.

Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitProvides

    R visitProvides​(ModuleElement.ProvidesDirective d,
                    P p)

Visits a `provides` directive.

Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result

#### visitUnknown

    default R visitUnknown​(ModuleElement.Directive d,
                           P p)

Visits an unknown directive. This can occur if the language evolves and new kinds of directive are added.

Implementation Requirements:
  The default implementation throws `new UnknownDirectiveException(d, p)`.
Parameters:
  `d` - the directive to visit
  `p` - a visitor-specified parameter
Returns:
  a visitor-specified result
Throws:
  `UnknownDirectiveException` - a visitor implementation may optionally throw this exception