|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ReflectiveVisitDispatcher<R extends ReflectiveVisitor,E>
Interface for looking up methods relating to reflective visitation. One possible implementation would cache the results.
Type parameter 'R' is the base class of visitoR class; type parameter 'E' is the base class of visiteE class.
TODO: obsolete ReflectUtil.lookupVisitMethod(java.lang.Class>, java.lang.Class>, java.lang.String)
, and use caching in
implementing that method.
Method Summary | |
---|---|
boolean |
invokeVisitor(R visitor,
E visitee,
String visitMethodName)
Implements the Glossary.VisitorPattern via reflection. |
Method |
lookupVisitMethod(Class<? extends R> visitorClass,
Class<? extends E> visiteeClass,
String visitMethodName)
Looks up a visit method. |
Method |
lookupVisitMethod(Class<? extends R> visitorClass,
Class<? extends E> visiteeClass,
String visitMethodName,
List<Class> additionalParameterTypes)
Looks up a visit method taking additional parameters beyond the overloaded visitee type. |
Method Detail |
---|
Method lookupVisitMethod(Class<? extends R> visitorClass, Class<? extends E> visiteeClass, String visitMethodName, List<Class> additionalParameterTypes)
visitorClass
- class of object whose visit method is to be invokedvisiteeClass
- class of object to be passed as a parameter to the
visit methodvisitMethodName
- name of visit methodadditionalParameterTypes
- list of additional parameter types
Method lookupVisitMethod(Class<? extends R> visitorClass, Class<? extends E> visiteeClass, String visitMethodName)
visitorClass
- class of object whose visit method is to be invokedvisiteeClass
- class of object to be passed as a parameter to the
visit methodvisitMethodName
- name of visit method
boolean invokeVisitor(R visitor, E visitee, String visitMethodName)
Glossary.VisitorPattern
via reflection. The basic
technique is taken from a
Javaworld article. For an example of how to use it, see ReflectVisitorTest
. Visit method lookup follows the same rules as if
compile-time resolution for VisitorClass.visit(VisiteeClass) were
performed. An ambiguous match due to multiple interface inheritance
results in an IllegalArgumentException. A non-match is indicated by
returning false.
visitor
- object whose visit method is to be invokedvisitee
- object to be passed as a parameter to the visit methodvisitMethodName
- name of visit method, e.g. "visit"
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |