java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.beans
类 Introspector

java.lang.Object
  继承者 java.beans.Introspector

public class Introspector
extends Object

Introspector 类为通过工具学习有关受目标 Java bean 支持的属性、事件和方法的知识提供了一个标准方法。

对于这三种信息,Introspector 将分别分析 bean 的类和超类,寻找显式和隐式信息,使用这些信息构建一个全面描述目标 bean 的 BeanInfo 对象。

对于每个 "Foo" 类,如果存在相应的 "FooBeanInfo" 类,显式信息可能是可用的,查询这些信息时,FooBeanInfo 类会提供一个非 null 值。通过获得目标 bean 类的完全受限定包名称并追加 "BeanInfo" 形成一个新类,首先查找 BeanInfo 类。如果此操作失败,则采用此名称的最终类名称组件,在 BeanInfo 包搜索路径中指定的每个包中搜索该类。

因此对于某个类,比如说 "sun.xyz.OurButton",首先需要查找称为 "sun.xyz.OurButtonBeanInfo" 的 BeanInfo 类,如果失败,则查找 BeanInfo 搜索路径中的每个包来搜索 OurButtonBeanInfo 类。对于默认搜索路径,这意味着将查找 "sun.beans.infos.OurButtonBeanInfo"。

如果某个类提供有关其自身的显式 BeanInfo,则将从分析其他派生类得到的信息添加到 BeanInfo 信息中,并将显式信息视为当前类和基类的权威信息,无需进一步深入超类链进行分析。

如果没有在某个类上发现显式 BeanInfo,则使用低层次的反射来研究类的方法,并应用标准设计模式来标识属性存储器、事件源或公共方法。然后深入分析类的超类,从它那里(可能在超类链的顶部)添加信息。

因为 Introspector 缓存 BeanInfo 类来获得更好的性能,所以如果在使用多个类加载器的应用程序中使用它,则需小心谨慎。通常,在破坏一个已用于 introspect 类的 ClassLoader 时,应使用 Introspector.flushCachesIntrospector.flushFromCaches 方法从缓存中清除所有内省的类。

有关内省和设计模式的更多信息,请参阅 JavaBeans specification


字段摘要
static int IGNORE_ALL_BEANINFO
           
static int IGNORE_IMMEDIATE_BEANINFO
           
static int USE_ALL_BEANINFO
           
 
方法摘要
static String decapitalize(String name)
          获得一个字符串并将它转换成普通 Java 可用名称大写形式的实用程序方法。
static void flushCaches()
          刷新所有 Introspector 的内部缓存。
static void flushFromCaches(Class<?> clz)
          刷新给定类的 Introspector 的内部缓存信息。
static BeanInfo getBeanInfo(Class<?> beanClass)
          在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件。
static BeanInfo getBeanInfo(Class<?> beanClass, Class<?> stopClass)
          在给定的“断”点之下,在 Java Bean 上进行内省,了解其所有属性和公开的方法。
static BeanInfo getBeanInfo(Class<?> beanClass, int flags)
          在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件,并将结果用一些控制标记表示。
static String[] getBeanInfoSearchPath()
          获得将用来查找 BeanInfo 类的包名称的列表。
static void setBeanInfoSearchPath(String[] path)
          更改将用来查找 BeanInfo 类的包名称的列表。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

USE_ALL_BEANINFO

public static final int USE_ALL_BEANINFO
另请参见:
常量字段值

IGNORE_IMMEDIATE_BEANINFO

public static final int IGNORE_IMMEDIATE_BEANINFO
另请参见:
常量字段值

IGNORE_ALL_BEANINFO

public static final int IGNORE_ALL_BEANINFO
另请参见:
常量字段值
方法详细信息

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass)
                            throws IntrospectionException
在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件。

如果 Java Bean 的 BeanInfo 类以前已经被内省,则从 BeanInfo 缓存中检索 BeanInfo 类。

参数:
beanClass - 将要分析的 bean 类。
返回:
描述目标 bean 的 BeanInfo 对象。
抛出:
IntrospectionException - 如果在内省期间发生异常。
另请参见:
flushCaches(), flushFromCaches(java.lang.Class)

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass,
                                   int flags)
                            throws IntrospectionException
在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件,并将结果用一些控制标记表示。

如果 Java Bean 的 BeanInfo 类以前已经基于相同的参数被内省,则从 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 - 如果在内省期间发生异常。

getBeanInfo

public static BeanInfo getBeanInfo(Class<?> beanClass,
                                   Class<?> stopClass)
                            throws IntrospectionException
在给定的“断”点之下,在 Java Bean 上进行内省,了解其所有属性和公开的方法。

如果 Java Bean 的 BeanInfo 类以前已经基于相同的参数被内省,则从 BeanInfo 缓存中检索 BeanInfo 类。

参数:
beanClass - 将要分析的 bean 类。
stopClass - 从其所在位置开始停止分析的基类。stopClass 或其基类中的所有方法/属性/事件都将在分析中被忽略。
抛出:
IntrospectionException - 如果在内省期间发生异常。

decapitalize

public static String decapitalize(String name)
获得一个字符串并将它转换成普通 Java 可用名称大写形式的实用程序方法。这通常意味着将首字符从大写转换成小写,但在(不平常的)特殊情况下,当有多个字符且第一个和第二个字符都是大写字符时,不执行任何操作。

因此 "FooBah" 变成 "fooBah","X" 变成 "x",但 "URL" 仍然是 "URL"。

参数:
name - 要取消大写化的字符串。
返回:
取消大写化的字符串。

getBeanInfoSearchPath

public static String[] getBeanInfoSearchPath()
获得将用来查找 BeanInfo 类的包名称的列表。

返回:
为了查找 BeanInfo 类而被搜索的包名称数组。此数组的默认值与实现有关,例如 Sun 实现最初被设置为 {"sun.beans.infos"}。

setBeanInfoSearchPath

public static void setBeanInfoSearchPath(String[] path)
更改将用来查找 BeanInfo 类的包名称的列表。如果参数 path 为 null,则此方法的行为是未定义的。

如果有安全管理器,则首先调用其 checkPropertiesAccess 方法。这可能会导致 SecurityException 异常。

参数:
path - 包名称数组。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPropertiesAccess 方法不允许设置系统属性。
另请参见:
SecurityManager.checkPropertiesAccess()

flushCaches

public static void flushCaches()
刷新所有 Introspector 的内部缓存。通常不需要此方法。通常只有高级工具才需要使用此方法,这些工具需要在适当的位置更新现有的 "Class" 对象,并需要使 Introspector 重新分析现有的 Class 对象。


flushFromCaches

public static void flushFromCaches(Class<?> clz)
刷新给定类的 Introspector 的内部缓存信息。通常不需要此方法。通常只有高级工具才需要使用此方法,这些工具需要在适当的位置更新现有的 "Class" 对象,并需要使 Introspector 重新分析现有的 Class 对象。 注意,只刷新与目标 Class 对象有关联的直接状态。不需要刷新具有相同名称的其他 Class 对象的状态,也不需要刷新所有相关 Class 对象(比如子类)的状态,这些状态甚至可能包括间接从目标 Class 对象中获得的信息。

参数:
clz - 要刷新的 Class 对象。
抛出:
NullPointerException - 如果 Class 对象为 null。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策