- java.lang.Object
-  
      - java.beans.Introspector
 
-  
       
 public class Introspector extends Object Introspector类为工具提供了一种标准方法,可以了解目标Java Bean支持的属性,事件和方法。对于这三种信息中的每一种,Introspector将分别分析bean的类和超类,寻找显式或隐式信息,并使用该信息构建全面描述目标bean的BeanInfo对象。 对于每个类“Foo”,如果存在对应的“FooBeanInfo”类,则在查询信息时提供非空值时,可以使用显式信息。 我们首先通过获取目标bean类的完整包限定名称并附加“BeanInfo”来形成新的类名来查找BeanInfo类。 如果失败,则我们获取此名称的最终classname组件,并在BeanInfo包搜索路径中指定的每个包中查找该类。 因此,对于诸如“sun.xyz.OurButton”之类的类,我们首先会查找名为“sun.xyz.OurButtonBeanInfo”的BeanInfo类,如果失败,我们将查看BeanInfo搜索路径中每个包中的OurButtonBeanInfo类。 使用默认搜索路径,这将意味着查找“sun.beans.infos.OurButtonBeanInfo”。 如果一个类提供关于它自己的显式BeanInfo,那么我们将它添加到我们从分析任何派生类获得的BeanInfo信息中,但是我们认为显式信息对于当前类及其基类是确定的,并且不再继续超类链。 如果我们没有在类上找到显式BeanInfo,我们使用低级反射来研究类的方法,并应用标准设计模式来标识属性访问器,事件源或公共方法。 然后我们继续分析类的超类并从中添加信息(并且可能在超类链上)。 有关内省和设计模式的更多信息,请参阅JavaBeans™ specification 。 - 从以下版本开始:
- 1.1
 
-  
        
       -  
             字段汇总字段 变量和类型 字段 描述 static intIGNORE_ALL_BEANINFO用于指示忽略所有beaninfo的标志。static intIGNORE_IMMEDIATE_BEANINFO用于指示忽略直接beaninfo的标志。static intUSE_ALL_BEANINFO用于指示使用所有beaninfo的标志。
 -  
             方法摘要所有方法 静态方法 具体的方法 变量和类型 方法 描述 static Stringdecapitalize(String name)获取字符串并将其转换为普通Java变量名称大小写的实用方法。static voidflushCaches()刷新所有Introspector的内部缓存。static voidflushFromCaches(类<?> clz)刷新Introspector的给定类的内部缓存信息。static BeanInfogetBeanInfo(类<?> beanClass)对Java Bean进行内省并了解其所有属性,公开方法和事件。static BeanInfogetBeanInfo(类<?> beanClass, int flags)对Java bean进行内省并了解其所有属性,公开方法和事件,并遵守一些控制标志。static BeanInfogetBeanInfo(类<?> beanClass, 类<?> stopClass)对Java bean进行内省,并在给定的“停止”点下了解其属性,公开方法。static BeanInfogetBeanInfo(类<?> beanClass, 类<?> stopClass, int flags)对Java Bean进行内省并了解其所有属性,公开方法和事件,低于给定的stopClass点,受某些控制flags。static String[]getBeanInfoSearchPath()获取将用于查找BeanInfo类的包名称列表。static voidsetBeanInfoSearchPath(String[] path)更改将用于查找BeanInfo类的包名称列表。
 
-  
             
-  
        
       -  
             字段详细信息-  USE_ALL_BEANINFOpublic static final int USE_ALL_BEANINFO 用于指示使用所有beaninfo的标志。- 从以下版本开始:
- 1.2
- 另请参见:
- 常数字段值
 
 -  IGNORE_IMMEDIATE_BEANINFOpublic static final int IGNORE_IMMEDIATE_BEANINFO 用于指示忽略直接beaninfo的标志。- 从以下版本开始:
- 1.2
- 另请参见:
- 常数字段值
 
 -  IGNORE_ALL_BEANINFOpublic static final int IGNORE_ALL_BEANINFO 用于指示忽略所有beaninfo的标志。- 从以下版本开始:
- 1.2
- 另请参见:
- 常数字段值
 
 
-  
 -  
             方法详细信息-  getBeanInfopublic static BeanInfo getBeanInfo(类<?> beanClass) throws IntrospectionException 对Java Bean进行内省并了解其所有属性,公开方法和事件。如果Java Bean的BeanInfo类先前是Introspected,则从BeanInfo缓存中检索BeanInfo类。 - 参数
-  
              beanClass- 要分析的bean类。
- 结果
- 描述目标bean的BeanInfo对象。
- 异常
-  
              IntrospectionException- 如果IntrospectionException期间发生异常。
- 另请参见:
-  
              flushCaches(),flushFromCaches(java.lang.Class<?>)
 
 -  getBeanInfopublic static BeanInfo getBeanInfo(类<?> beanClass, int flags) throws IntrospectionException 对Java bean进行内省并了解其所有属性,公开方法和事件,并遵守一些控制标志。如果Java Bean的BeanInfo类先前已根据相同的参数进行了Introspected,则从BeanInfo缓存中检索BeanInfo类。 - 参数
-  
              beanClass- 要分析的bean类。
-  
              flags- 控制内省的标志。 如果flags == USE_ALL_BEANINFO,那么我们使用我们可以发现的所有BeanInfo类。 如果flags == IGNORE_IMMEDIATE_BEANINFO,则忽略与指定beanClass关联的任何BeanInfo。 如果flags == IGNORE_ALL_BEANINFO,则忽略与指定beanClass或其任何父类关联的所有BeanInfo。
- 结果
- 描述目标bean的BeanInfo对象。
- 异常
-  
              IntrospectionException- 如果IntrospectionException期间发生异常。
- 从以下版本开始:
- 1.2
 
 -  getBeanInfopublic static BeanInfo getBeanInfo(类<?> beanClass, 类<?> stopClass) throws IntrospectionException 对Java bean进行内省,并在给定的“停止”点下了解其属性,公开方法。如果Java Bean的BeanInfo类先前已根据相同的参数进行了Introspected,则从BeanInfo缓存中检索BeanInfo类。 - 参数
-  
              beanClass- 要分析的bean类。
-  
              stopClass- 停止分析的基类。 在分析中将忽略stopClass或其基类中的任何方法/属性/事件。
- 结果
- bean的BeanInfo
- 异常
-  
              IntrospectionException- 如果IntrospectionException期间发生异常。
 
 -  getBeanInfopublic static BeanInfo getBeanInfo(类<?> beanClass, 类<?> stopClass, int flags) throws IntrospectionException 对Java Bean进行内省并了解其所有属性,公开方法和事件,低于给定的stopClass点,受某些控制flags。- USE_ALL_BEANINFO
- 将使用可以发现的任何BeanInfo。
- IGNORE_IMMEDIATE_BEANINFO
-  
               将忽略与指定的beanClass关联的任何BeanInfo。
- IGNORE_ALL_BEANINFO
-  
               将忽略与指定的beanClass或其任何父类关联的任何BeanInfo。
 stopClass或其父类中的任何方法/属性/事件。如果先前已基于相同参数对Java Bean的BeanInfo类进行了内省,则从BeanInfo缓存中检索BeanInfo类。 - 参数
-  
              beanClass- 要分析的bean类
-  
              stopClass- 停止分析的父类
-  
              flags- 控制内省的标志
- 结果
- 描述目标bean的BeanInfo对象
- 异常
-  
              IntrospectionException- 如果IntrospectionException期间发生异常
- 从以下版本开始:
- 1.7
 
 -  decapitalizepublic static String decapitalize(String name) 获取字符串并将其转换为普通Java变量名称大小写的实用方法。 这通常意味着将第一个字符从大写转换为小写,但在(异常)特殊情况下,当有多个字符并且第一个和第二个字符都是大写时,我们不管它。因此,“FooBah”变为“fooBah”,“X”变为“x”,但“URL”保持为“URL”。 - 参数
-  
              name- 要进行name的字符串。
- 结果
- 字符串的decapitalized版本。
 
 -  getBeanInfoSearchPathpublic static String[] getBeanInfoSearchPath() 获取将用于查找BeanInfo类的包名称列表。- 结果
- 将搜索的包名称数组,以便查找BeanInfo类。 此数组的默认值取决于实现; 例如,Sun实施最初设置为{“sun.beans.infos”}。
 
 -  setBeanInfoSearchPathpublic static void setBeanInfoSearchPath(String[] path) 更改将用于查找BeanInfo类的包名称列表。 如果参数path为null,则此方法的行为未定义。首先,如果有安全管理器,则调用其 checkPropertiesAccess方法。 这可能会导致SecurityException。- 参数
-  
              path- 包名称的数组。
- 异常
-  
              SecurityException- 如果存在安全管理器且其checkPropertiesAccess方法不允许设置系统属性。
- 另请参见:
-  
              SecurityManager.checkPropertiesAccess()
 
 -  flushCachespublic static void flushCaches() 刷新所有Introspector的内部缓存。 通常不需要此方法。 通常只有高级工具才需要就地更新现有的“类”对象,并且需要使Introspector重新分析现有的Class对象。- 从以下版本开始:
- 1.2
 
 -  flushFromCachespublic static void flushFromCaches(类<?> clz) 刷新Introspector的给定类的内部缓存信息。 通常不需要此方法。 通常只有高级工具才需要就地更新现有的“类”对象,并且需要使Introspector重新分析现有的Class对象。 请注意,仅刷新与目标Class对象关联的直接状态。 我们不会为具有相同名称的其他Class对象刷新状态,也不会为任何相关的Class对象(例如子类)刷新状态,即使它们的状态可能包含从目标Class对象间接获得的信息。- 参数
-  
              clz- 要刷新的类对象。
- 异常
-  
              NullPointerException- 如果Class对象为null。
- 从以下版本开始:
- 1.2
 
 
-  
 
-