public class Introspector extends Object
每个人三种信息,Introspector将分别分析bean类和超类寻找明示或隐含的信息并利用这些信息来建立一个BeanInfo对象,全面介绍了目标bean。
对每一类“foo”,明确的信息是可用的如果存在一个相应的“foobeaninfo”类,提供了一个非空值时,查询信息。我们首先寻找BeanInfo类以目标bean类的完全限定名和附加包”的BeanInfo”形成一个新的类的名称。如果失败了,那么我们把这个名字最终类名组成,寻找类中的每个包的搜索路径指定的包BeanInfo。
对于一个类如“太阳。XYZ。OurButton“我们会先找一个BeanInfo类称为“太阳”。XYZ。ourbuttonbeaninfo“如果失败,我们会在每个包的搜索路径的一个ourbuttonbeaninfo BeanInfo类。与默认的搜索路径,这就意味着“太阳”。ourbuttonbeaninfo豆。信息。”。
如果一个类提供了明确的BeanInfo本身然后我们添加到我们从分析任何派生类BeanInfo信息,但我们认为明确的信息是明确当前类的基类,而不进行任何进一步的超链。
如果我们找不到明确的BeanInfo类上,我们使用低反射研究的类的方法和适用标准的设计模式来识别属性访问器,事件源或公共方法。接着我们分析类的父类和添加的信息从它(可能上超链)。
关于反思和设计模式的更多信息,请咨询JavaBeans™ specification。
Modifier and Type | Field and Description |
---|---|
static int |
IGNORE_ALL_BEANINFO
表明忽略所有BeanInfo旗。
|
static int |
IGNORE_IMMEDIATE_BEANINFO
表明忽视立即BeanInfo旗。
|
static int |
USE_ALL_BEANINFO
显示所有使用BeanInfo旗。
|
Modifier and Type | Method and Description |
---|---|
static String |
decapitalize(String name)
本方法需要一个字符串,将其转换为普通java变量名大写。
|
static void |
flushCaches()
冲洗所有的内省的内部缓存。
|
static void |
flushFromCaches(类<?> clz)
同花顺Introspector的内部缓存的信息对于一个给定的类。
|
static BeanInfo |
getBeanInfo(类<?> beanClass)
反思了java bean和了解它的全部属性,方法和事件的暴露。
|
static BeanInfo |
getBeanInfo(类<?> beanClass, 类<?> stopClass)
反思了java bean和学习所有关于它的性质,暴露的方法,在给予“停止点”。
|
static BeanInfo |
getBeanInfo(类<?> beanClass, 类<?> stopClass, int flags)
反思了java bean和了解它的所有属性、方法和事件的暴露,低于一个给定的
stopClass 点受到一些控制
flags 。
|
static BeanInfo |
getBeanInfo(类<?> beanClass, int flags)
反思了java bean和了解它的全部属性,方法和事件,暴露,受到一些控制标志。
|
static String[] |
getBeanInfoSearchPath()
获取包的名称将用于寻找BeanInfo类列表。
|
static void |
setBeanInfoSearchPath(String[] path)
改变包的名称将用于寻找BeanInfo类列表。
|
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(类<?> beanClass) throws IntrospectionException
如果一个java bean BeanInfo类先前已反思然后BeanInfo类是从缓存中检索的BeanInfo。
beanClass
- bean类进行分析。
IntrospectionException
-如果在反思发生异常。
flushCaches()
,
flushFromCaches(java.lang.Class<?>)
public static BeanInfo getBeanInfo(类<?> beanClass, int flags) throws IntrospectionException
如果一个java bean BeanInfo类先前已对基于相同的论点然后BeanInfo类是从缓存中检索的BeanInfo。
beanClass
- bean类进行分析。
flags
-标志控制的反思。如果国旗= = use_all_beaninfo然后我们使用所有的BeanInfo类我们可以发现。如果国旗= = ignore_immediate_beaninfo然后我们忽略任何与指定的beanclass BeanInfo。如果国旗= = ignore_all_beaninfo然后我们忽略所有的BeanInfo与指定的beanclass或其任何父类。
IntrospectionException
-如果在反思发生异常。
public static BeanInfo getBeanInfo(类<?> beanClass, 类<?> stopClass) throws IntrospectionException
如果一个java bean BeanInfo类先前已对基于同样的理由,然后BeanInfo类从缓存中检索BeanInfo。
beanClass
- bean类进行分析。
stopClass
的基类,停止分析。任何方法或属性在stopclass或在其baseclasses事件会在分析中忽略。
IntrospectionException
-如果在反思发生异常。
public static BeanInfo getBeanInfo(类<?> beanClass, 类<?> stopClass, int flags) throws IntrospectionException
stopClass
点受到一些控制
flags
。
beanClass
相关的任何BeanInfo将被忽略。
beanClass
或其任何父类相关的任何BeanInfo将被忽略。
stopClass
或在它的父类将在分析中忽略的事件/。
如果一个java bean BeanInfo类先前已对基于相同的论点然后BeanInfo类是从缓存中检索的BeanInfo。
beanClass
- bean类进行分析
stopClass
-父类,停止分析
flags
-标志控制的反思
IntrospectionException
-如果在反思发生异常
public static String decapitalize(String name)
因此,“foobah”变成了“foobah”和“X”变成了“X”,但“URL”停留在“URL”。
name
要decapitalized字符串。
public static String[] getBeanInfoSearchPath()
public static void setBeanInfoSearchPath(String[] path)
首先,如果存在安全管理器,它的checkPropertiesAccess
方法称为。这可能导致SecurityException。
path
-包名的数组。
SecurityException
-如果存在一个安全管理及其
checkPropertiesAccess
方法不允许系统属性的设置。
SecurityManager.checkPropertiesAccess()
public static void flushCaches()
public static void flushFromCaches(类<?> clz)
clz
级对象被刷新。
NullPointerException
-如果类对象为空。
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, 2014, Oracle and/or its affiliates. All rights reserved.