public class Introspector extends Object
For each of those three kinds of information, the Introspector will separately analyze the bean's class and superclasses looking for either explicit or implicit information and use that information to build a BeanInfo object that comprehensively describes the target bean.
For each class "Foo", explicit information may be available if there exists a corresponding "FooBeanInfo" class that provides a non-null value when queried for the information. We first look for the BeanInfo class by taking the full package-qualified name of the target bean class and appending "BeanInfo" to form a new class name. If this fails, then we take the final classname component of this name, and look for that class in each of the packages specified in the BeanInfo package search path.
Thus for a class such as "sun.xyz.OurButton" we would first look for a BeanInfo class called "sun.xyz.OurButtonBeanInfo" and if that failed we'd look in each package in the BeanInfo search path for an OurButtonBeanInfo class. With the default search path, this would mean looking for "sun.beans.infos.OurButtonBeanInfo".
If a class provides explicit BeanInfo about itself then we add that to the BeanInfo information we obtained from analyzing any derived classes, but we regard the explicit information as being definitive for the current class and its base classes, and do not proceed any further up the superclass chain.
If we don't find explicit BeanInfo on a class, we use low-level reflection to study the methods of the class and apply standard design patterns to identify property accessors, event sources, or public methods. We then proceed to analyze the class's superclass and add in the information from it (and possibly on up the superclass chain).
For more information about introspection and design patterns, please consult the JavaBeans™ specification.
| Modifier and Type | Field and Description | 
|---|---|
| static int | IGNORE_ALL_BEANINFOFlag to indicate to ignore all beaninfo. | 
| static int | IGNORE_IMMEDIATE_BEANINFOFlag to indicate to ignore immediate beaninfo. | 
| static int | USE_ALL_BEANINFOFlag to indicate to use of all beaninfo. | 
| Modifier and Type | Method and Description | 
|---|---|
| static String | decapitalize(String name)Utility method to take a string and convert it to normal Java variable
 name capitalization. | 
| static void | flushCaches()Flush all of the Introspector's internal caches. | 
| static void | flushFromCaches(Class<?> clz)Flush the Introspector's internal cached information for a given class. | 
| static BeanInfo | getBeanInfo(Class<?> beanClass)Introspect on a Java Bean and learn about all its properties, exposed
 methods, and events. | 
| static BeanInfo | getBeanInfo(Class<?> beanClass,
           Class<?> stopClass)Introspect on a Java bean and learn all about its properties, exposed
 methods, below a given "stop" point. | 
| static BeanInfo | getBeanInfo(Class<?> beanClass,
           Class<?> stopClass,
           int flags)Introspect on a Java Bean and learn about all its properties,
 exposed methods and events, below a given  stopClasspoint
 subject to some controlflags. | 
| static BeanInfo | getBeanInfo(Class<?> beanClass,
           int flags)Introspect on a Java bean and learn about all its properties, exposed
 methods, and events, subject to some control flags. | 
| static String[] | getBeanInfoSearchPath()Gets the list of package names that will be used for
          finding BeanInfo classes. | 
| static void | setBeanInfoSearchPath(String[] path)Change the list of package names that will be used for
          finding BeanInfo classes. | 
public static final int USE_ALL_BEANINFO
public static final int IGNORE_IMMEDIATE_BEANINFO
public static final int IGNORE_ALL_BEANINFO
public static BeanInfo getBeanInfo(Class<?> beanClass) throws IntrospectionException
If the BeanInfo class for a Java Bean has been previously Introspected then the BeanInfo class is retrieved from the BeanInfo cache.
beanClass - The bean class to be analyzed.IntrospectionException - if an exception occurs during
              introspection.flushCaches(), 
flushFromCaches(java.lang.Class<?>)public static BeanInfo getBeanInfo(Class<?> beanClass, int flags) throws IntrospectionException
If the BeanInfo class for a Java Bean has been previously Introspected based on the same arguments then the BeanInfo class is retrieved from the BeanInfo cache.
beanClass - The bean class to be analyzed.flags - Flags to control the introspection.
     If flags == USE_ALL_BEANINFO then we use all of the BeanInfo
          classes we can discover.
     If flags == IGNORE_IMMEDIATE_BEANINFO then we ignore any
           BeanInfo associated with the specified beanClass.
     If flags == IGNORE_ALL_BEANINFO then we ignore all BeanInfo
           associated with the specified beanClass or any of its
           parent classes.IntrospectionException - if an exception occurs during
              introspection.public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass) throws IntrospectionException
If the BeanInfo class for a Java Bean has been previously Introspected based on the same arguments, then the BeanInfo class is retrieved from the BeanInfo cache.
beanClass - The bean class to be analyzed.stopClass - The baseclass at which to stop the analysis.  Any
    methods/properties/events in the stopClass or in its baseclasses
    will be ignored in the analysis.IntrospectionException - if an exception occurs during
              introspection.public static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass, int flags) throws IntrospectionException
stopClass point
 subject to some control flags.
 beanClass will be ignored.beanClass
      or any of its parent classes will be ignored.stopClass
 or in its parent classes will be ignored in the analysis.
 If the BeanInfo class for a Java Bean has been previously introspected based on the same arguments then the BeanInfo class is retrieved from the BeanInfo cache.
beanClass - the bean class to be analyzedstopClass - the parent class at which to stop the analysisflags - flags to control the introspectionIntrospectionException - if an exception occurs during introspectionpublic static String decapitalize(String name)
Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays as "URL".
name - The string to be decapitalized.public static String[] getBeanInfoSearchPath()
public static void setBeanInfoSearchPath(String[] path)
First, if there is a security manager, its checkPropertiesAccess
 method is called. This could result in a SecurityException.
path - Array of package names.SecurityException - if a security manager exists and its
             checkPropertiesAccess method doesn't allow setting
              of system properties.SecurityManager.checkPropertiesAccess()public static void flushCaches()
public static void flushFromCaches(Class<?> clz)
clz - Class object to be flushed.NullPointerException - If the Class object is null. Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2015, Oracle and/or its affiliates.  All rights reserved.