|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.util.ReflectUtil
public abstract class ReflectUtil
Static utilities for Java reflection.
Field Summary | |
---|---|
private static Map<Class,Class> |
primitiveToBoxingMap
|
private static Map<Class,Method> |
primitiveToByteBufferReadMethod
|
private static Map<Class,Method> |
primitiveToByteBufferWriteMethod
|
Constructor Summary | |
---|---|
ReflectUtil()
|
Method Summary | ||
---|---|---|
static
|
createDispatcher(Class<R> visitorBaseClazz,
Class<E> visiteeBaseClazz)
Creates a dispatcher for calls to lookupVisitMethod(java.lang.Class>, java.lang.Class>, java.lang.String) . |
|
static Class |
getBoxingClass(Class primitiveClass)
Gets the Java boxing class for a primitive class. |
|
static Method |
getByteBufferReadMethod(Class clazz)
Uses reflection to find the correct java.nio.ByteBuffer "absolute get" method for a given primitive type. |
|
static Method |
getByteBufferWriteMethod(Class clazz)
Uses reflection to find the correct java.nio.ByteBuffer "absolute put" method for a given primitive type. |
|
static Class<?> |
getClassForName(String name)
Looks up a class by name. |
|
static String |
getUnmangledMethodName(Class declaringClass,
String methodName,
Class[] paramTypes)
Composes a string representing a human-readable method name (with neither exception nor return type information). |
|
static String |
getUnmangledMethodName(Method method)
Composes a string representing a human-readable method name (with neither exception nor return type information). |
|
static String |
getUnqualifiedClassName(Class c)
Gets the name of a class with no package qualifiers; if it's an inner class, it will still be qualified by the containing class (X$Y). |
|
static boolean |
invokeVisitor(ReflectiveVisitor visitor,
Object visitee,
Class hierarchyRoot,
String visitMethodName)
Implements the Glossary.VisitorPattern via reflection. |
|
private static boolean |
invokeVisitorInternal(Object visitor,
Object visitee,
Class hierarchyRoot,
String visitMethodName)
Shared implementation of the two forms of invokeVisitor. |
|
static Method |
lookupVisitMethod(Class<?> visitorClass,
Class<?> visiteeClass,
String visitMethodName)
Looks up a visit method. |
|
private static Method |
lookupVisitMethod(Class<?> visitorClass,
Class<?> visiteeClass,
String visitMethodName,
Class<?>[] paramTypes,
Map<Class<?>,Method> cache)
|
|
static Method |
lookupVisitMethod(Class<?> visitorClass,
Class<?> visiteeClass,
String visitMethodName,
List<Class> additionalParameterTypes)
Looks up a visit method taking additional parameters beyond the overloaded visitee type. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static Map<Class,Class> primitiveToBoxingMap
private static Map<Class,Method> primitiveToByteBufferReadMethod
private static Map<Class,Method> primitiveToByteBufferWriteMethod
Constructor Detail |
---|
public ReflectUtil()
Method Detail |
---|
public static Method getByteBufferReadMethod(Class clazz)
clazz
- the Class object representing the primitive type
public static Method getByteBufferWriteMethod(Class clazz)
clazz
- the Class object representing the primitive type
public static Class getBoxingClass(Class primitiveClass)
primitiveClass
- representative class for primitive (e.g.
java.lang.Integer.TYPE)
public static String getUnqualifiedClassName(Class c)
c
- the class of interest
public static String getUnmangledMethodName(Class declaringClass, String methodName, Class[] paramTypes)
declaringClass
- class on which method is definedmethodName
- simple name of method without signatureparamTypes
- method parameter types
public static String getUnmangledMethodName(Method method)
method
- method whose name is to be generated
public static boolean invokeVisitor(ReflectiveVisitor visitor, Object visitee, Class hierarchyRoot, 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 methodhierarchyRoot
- if non-null, visitor method will only be invoked if
it takes a parameter whose type is a subtype of hierarchyRootvisitMethodName
- name of visit method, e.g. "visit"
private static boolean invokeVisitorInternal(Object visitor, Object visitee, Class hierarchyRoot, String visitMethodName)
visitor
- object whose visit method is to be invokedvisitee
- object to be passed as a parameter to the visit methodhierarchyRoot
- if non-null, visitor method will only be invoked if
it takes a parameter whose type is a subtype of hierarchyRootvisitMethodName
- name of visit method, e.g. "visit"
public static Method lookupVisitMethod(Class<?> visitorClass, Class<?> 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
public static Method lookupVisitMethod(Class<?> visitorClass, Class<?> 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
createDispatcher(Class,Class)
private static Method lookupVisitMethod(Class<?> visitorClass, Class<?> visiteeClass, String visitMethodName, Class<?>[] paramTypes, Map<Class<?>,Method> cache)
public static <R extends ReflectiveVisitor,E> ReflectiveVisitDispatcher<R,E> createDispatcher(Class<R> visitorBaseClazz, Class<E> visiteeBaseClazz)
lookupVisitMethod(java.lang.Class>, java.lang.Class>, java.lang.String)
. The
dispatcher caches methods between invocations.
visitorBaseClazz
- Visitor base classvisiteeBaseClazz
- Visitee base class
public static Class<?> getClassForName(String name) throws Exception
name
- fully-qualified name of class to look up
Exception
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |