public class Introspector extends Object
Introspector is a utility for developers to figure out which properties, events, and methods a JavaBean supports.
The Introspector class walks over the class/superclass chain of the target bean class. At each level it checks if there is a matching
BeanInfo class which provides explicit information about the bean, and if so uses that explicit information. Otherwise it uses the low level
reflection APIs to study the target class and uses design patterns to analyze its behaviour and then proceeds to continue the introspection with its
baseclass.
To look for the explicit information of a bean:
Introspector appends "BeanInfo" to the qualified name of the bean class, try to use the new class as the "BeanInfo" class. If the
"BeanInfo" class exsits and returns non-null value when queried for explicit information, use the explicit informationIntrospector will extract a simple class name of the bean class by removing the package name from the qualified
name of the bean class, append "BeanInfo" to it. And look for the simple class name in the packages defined in the "BeanInfo" search path (The default
"BeanInfo" search path is sun.beans.infos). If it finds a "BeanInfo" class and the "BeanInfo" class returns non-null value when queried for
explicit information, use the explicit information| Modifier and Type | Field and Description |
|---|---|
static int |
IGNORE_ALL_BEANINFO
Constant values to indicate that the
Introspector will ignore all BeanInfo class. |
static int |
IGNORE_IMMEDIATE_BEANINFO
Constant values to indicate that the
Introspector will ignore the BeanInfo class of the current bean class. |
static int |
USE_ALL_BEANINFO
Constant values to indicate that the
Introspector will use all BeanInfo class which have been found. |
| Modifier and Type | Method and Description |
|---|---|
static String |
decapitalize(String name)
Decapitalizes a given string according to the rule:
If the first or only character is Upper Case, it is made Lower Case
UNLESS the second character is also Upper Case, when the String is returned unchanged
|
static void |
flushCaches()
Flushes all
BeanInfo caches. |
static void |
flushFromCaches(Class<?> clazz)
Flushes the
BeanInfo caches of the specified bean class |
static BeanInfo |
getBeanInfo(Class<?> beanClass)
Gets the
BeanInfo object which contains the information of the properties, events and methods of the specified bean class. |
static BeanInfo |
getBeanInfo(Class<?> beanClass,
Class<?> stopClass)
Gets the
BeanInfo object which contains the information of the properties, events and methods of the specified bean class. |
static BeanInfo |
getBeanInfo(Class<?> beanClass,
int flags)
Gets the
BeanInfo object which contains the information of the properties, events and methods of the specified bean class. |
static String[] |
getBeanInfoSearchPath()
Gets an array of search packages.
|
static void |
setBeanInfoSearchPath(String[] path)
Sets the search packages.
|
public static final int IGNORE_ALL_BEANINFO
Introspector will ignore all BeanInfo class.public static final int IGNORE_IMMEDIATE_BEANINFO
Introspector will ignore the BeanInfo class of the current bean class.public static final int USE_ALL_BEANINFO
Introspector will use all BeanInfo class which have been found. This is the default one.public static String decapitalize(String name)
name - - the String to decapitalizepublic static void flushCaches()
BeanInfo caches.public static void flushFromCaches(Class<?> clazz)
BeanInfo caches of the specified bean classclazz - the specified bean classpublic static BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException
BeanInfo object which contains the information of the properties, events and methods of the specified bean class.
The Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
beanClass - the specified bean class.BeanInfo of the bean class.IntrospectionExceptionpublic static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass) throws IntrospectionException
BeanInfo object which contains the information of the properties, events and methods of the specified bean class. It will not
introspect the "stopclass" and its super class.
The Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
beanClass - the specified beanClass.stopClass - the sopt class which should be super class of the bean class. May be null.BeanInfo of the bean class.IntrospectionExceptionpublic static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
BeanInfo object which contains the information of the properties, events and methods of the specified bean class.
flag==IGNORE_ALL_BEANINFO, the Introspector will ignore all BeanInfo class.flag==IGNORE_IMMEDIATE_BEANINFO, the Introspector will ignore the BeanInfo class of the current bean class.
flag==USE_ALL_BEANINFO, the Introspector will use all BeanInfo class which have been found.
The Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
beanClass - the specified bean class.flags - the flag to control the usage of the explicit BeanInfo class.BeanInfo of the bean class.IntrospectionExceptionpublic static String[] getBeanInfoSearchPath()
public static void setBeanInfoSearchPath(String[] path)
path - the new search packages to be set.Copyright © 2014. All Rights Reserved.