FileDocCategorySizeDatePackage
ElementKindVisitor6.javaAPI DocJava SE 6 API11299Tue Jun 10 00:26:12 BST 2008javax.lang.model.util

ElementKindVisitor6

public class ElementKindVisitor6 extends SimpleElementVisitor6
A visitor of program elements based on their {@linkplain ElementKind kind} with default behavior appropriate for the {@link SourceVersion#RELEASE_6 RELEASE_6} source version. For {@linkplain Element elements} XYZ that may have more than one kind, the visitXYZ methods in this class delegate to the visitXYZKind method corresponding to the first argument's kind. The visitXYZKind methods call {@link #defaultAction defaultAction}, passing their arguments to {@code defaultAction}'s corresponding parameters.

Methods in this class may be overridden subject to their general contract. Note that annotating methods in concrete subclasses with {@link java.lang.Override @Override} will help ensure that methods are overridden as intended.

WARNING: The {@code ElementVisitor} interface implemented by this class may have methods added to it or the {@code ElementKind} {@code enum} used in this case may have constants added to it in the future to accommodate new, currently unknown, language structures added to future versions of the Java™ programming language. Therefore, methods whose names begin with {@code "visit"} may be added to this class in the future; to avoid incompatibilities, classes which extend this class should not declare any instance methods with names beginning with {@code "visit"}.

When such a new visit method is added, the default implementation in this class will be to call the {@link #visitUnknown visitUnknown} method. A new abstract element kind visitor class will also be introduced to correspond to the new language level; this visitor will have different default behavior for the visit method in question. When the new visitor is introduced, all or portions of this visitor may be deprecated.

param
the return type of this visitor's methods. Use {@link Void} for visitors that do not need to return results.
param

the type of the additional parameter to this visitor's methods. Use {@code Void} for visitors that do not need an additional parameter.

author
Joseph D. Darcy
author
Scott Seligman
author
Peter von der Ahé
version
1.5 06/08/07
since
1.6

Fields Summary
Constructors Summary
protected ElementKindVisitor6()
Constructor for concrete subclasses; uses {@code null} for the default value.

	super(null);
    
protected ElementKindVisitor6(R defaultValue)
Constructor for concrete subclasses; uses the argument for the default value.

param
defaultValue the value to assign to {@link #DEFAULT_VALUE}

	super(defaultValue);
    
Methods Summary
public RvisitExecutable(javax.lang.model.element.ExecutableElement e, P p)
Visits an executable element, dispatching to the visit method for the specific {@linkplain ElementKind kind} of executable, {@code CONSTRUCTOR}, {@code INSTANCE_INIT}, {@code METHOD}, or {@code STATIC_INIT}.

param
e {@inheritDoc}
param
p {@inheritDoc}
return
the result of the kind-specific visit method

	ElementKind k = e.getKind();
	switch(k) {
	case CONSTRUCTOR:
	    return visitExecutableAsConstructor(e, p);

	case INSTANCE_INIT:
	    return visitExecutableAsInstanceInit(e, p);

	case METHOD:
	    return visitExecutableAsMethod(e, p);

	case STATIC_INIT:
	    return visitExecutableAsStaticInit(e, p);

	default:
	    throw new AssertionError("Bad kind " + k + " for ExecutableElement" + e);
	}
    
public RvisitExecutableAsConstructor(javax.lang.model.element.ExecutableElement e, P p)
Visits a {@code CONSTRUCTOR} executable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

	return defaultAction(e, p);
    
public RvisitExecutableAsInstanceInit(javax.lang.model.element.ExecutableElement e, P p)
Visits an {@code INSTANCE_INIT} executable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

	return defaultAction(e, p);
    
public RvisitExecutableAsMethod(javax.lang.model.element.ExecutableElement e, P p)
Visits a {@code METHOD} executable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

	return defaultAction(e, p);
    
public RvisitExecutableAsStaticInit(javax.lang.model.element.ExecutableElement e, P p)
Visits a {@code STATIC_INIT} executable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

	return defaultAction(e, p);
    
public RvisitPackage(javax.lang.model.element.PackageElement e, P p)
{@inheritDoc} The element argument has kind {@code PACKAGE}.

param
e {@inheritDoc}
param
p {@inheritDoc}
return
{@inheritDoc}

	assert e.getKind() == PACKAGE: "Bad kind on PackageElement";
	return defaultAction(e, p);
    
public RvisitType(javax.lang.model.element.TypeElement e, P p)
Visits a type element, dispatching to the visit method for the specific {@linkplain ElementKind kind} of type, {@code ANNOTATION_TYPE}, {@code CLASS}, {@code ENUM}, or {@code INTERFACE}.

param
e {@inheritDoc}
param
p {@inheritDoc}
return
the result of the kind-specific visit method

	ElementKind k = e.getKind();
	switch(k) {
	case ANNOTATION_TYPE:
	    return visitTypeAsAnnotationType(e, p);

	case CLASS:
	    return visitTypeAsClass(e, p);

	case ENUM:
	    return visitTypeAsEnum(e, p);
	    
	case INTERFACE:
	    return visitTypeAsInterface(e, p);
	    
	default:
	    throw new AssertionError("Bad kind " + k + " for TypeElement" + e);
	}
    
public RvisitTypeAsAnnotationType(javax.lang.model.element.TypeElement e, P p)
Visits an {@code ANNOTATION_TYPE} type element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitTypeAsClass(javax.lang.model.element.TypeElement e, P p)
Visits a {@code CLASS} type element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitTypeAsEnum(javax.lang.model.element.TypeElement e, P p)
Visits an {@code ENUM} type element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitTypeAsInterface(javax.lang.model.element.TypeElement e, P p)
Visits an {@code INTERFACE} type element by calling {@code defaultAction}. .

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitTypeParameter(javax.lang.model.element.TypeParameterElement e, P p)
{@inheritDoc} The element argument has kind {@code TYPE_PARAMETER}.

param
e {@inheritDoc}
param
p {@inheritDoc}
return
{@inheritDoc}

	assert e.getKind() == TYPE_PARAMETER: "Bad kind on TypeParameterElement";
	return defaultAction(e, p);
    
public RvisitVariable(javax.lang.model.element.VariableElement e, P p)
Visits a variable element, dispatching to the visit method for the specific {@linkplain ElementKind kind} of variable, {@code ENUM_CONSTANT}, {@code EXCEPTION_PARAMETER}, {@code FIELD}, {@code LOCAL_VARIABLE}, or {@code PARAMETER}.

param
e {@inheritDoc}
param
p {@inheritDoc}
return
the result of the kind-specific visit method

	ElementKind k = e.getKind();
	switch(k) {
	case ENUM_CONSTANT:
	    return visitVariableAsEnumConstant(e, p);

	case EXCEPTION_PARAMETER:
	    return visitVariableAsExceptionParameter(e, p);

	case FIELD:
	    return visitVariableAsField(e, p);

	case LOCAL_VARIABLE:
	    return visitVariableAsLocalVariable(e, p);

	case PARAMETER:
	    return visitVariableAsParameter(e, p);

	default:
	    throw new AssertionError("Bad kind " + k + " for VariableElement" + e);
	}

    
public RvisitVariableAsEnumConstant(javax.lang.model.element.VariableElement e, P p)
Visits an {@code ENUM_CONSTANT} variable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitVariableAsExceptionParameter(javax.lang.model.element.VariableElement e, P p)
Visits an {@code EXCEPTION_PARAMETER} variable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitVariableAsField(javax.lang.model.element.VariableElement e, P p)
Visits a {@code FIELD} variable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitVariableAsLocalVariable(javax.lang.model.element.VariableElement e, P p)
Visits a {@code LOCAL_VARIABLE} variable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);
    
public RvisitVariableAsParameter(javax.lang.model.element.VariableElement e, P p)
Visits a {@code PARAMETER} variable element by calling {@code defaultAction}.

param
e the element to visit
param
p a visitor-specified parameter
return
the result of {@code defaultAction}

 
	return defaultAction(e, p);