public class Beans extends Object
Constructor and Description |
---|
Beans() |
Modifier and Type | Method and Description |
---|---|
static Object |
getInstanceOf(Object bean, 类<?> targetType)
从给定的bean获取表示该源对象的指定类型视图的对象。
|
static Object |
instantiate(ClassLoader cls, String beanName)
实例化JavaBean。
|
static Object |
instantiate(ClassLoader cls, String beanName, BeanContext beanContext)
实例化JavaBean。
|
static Object |
instantiate(ClassLoader cls, String beanName, BeanContext beanContext, AppletInitializer initializer)
实例化一个bean。
|
static boolean |
isDesignTime()
测试我们是否在设计模式。
|
static boolean |
isGuiAvailable()
确定bean是否可以承担GUI可用。
|
static boolean |
isInstanceOf(Object bean, 类<?> targetType)
检查一个bean是否可以被看作给定的目标类型。
|
static void |
setDesignTime(boolean isDesignTime)
用于指示我们是否在应用程序构建器环境中运行。
|
static void |
setGuiAvailable(boolean isGuiAvailable)
用于指示我们是否在可以进行GUI交互的环境中运行。
|
public static Object instantiate(ClassLoader cls, String beanName) throws IOException, ClassNotFoundException
实例化JavaBean。
cls
- 我们应该从中创建bean的类加载器。
如果为空,则使用系统类加载器。
beanName
- 类加载器中的bean的名称。
例如“sun.beanbox.foobah”
ClassNotFoundException
- 如果找不到序列化对象的类。
IOException
- 如果发生I / O错误。
public static Object instantiate(ClassLoader cls, String beanName, BeanContext beanContext) throws IOException, ClassNotFoundException
实例化JavaBean。
cls
- 我们应该从中创建bean的类加载器。
如果为空,则使用系统类加载器。
beanName
- 类加载器中的bean的名称。
例如“sun.beanbox.foobah”
beanContext
- 嵌套新bean的BeanContext
ClassNotFoundException
- 如果找不到序列化对象的类。
IOException
- 如果发生I / O错误。
public static Object instantiate(ClassLoader cls, String beanName, BeanContext beanContext, AppletInitializer initializer) throws IOException, ClassNotFoundException
bean是基于相对于类加载器的名称创建的。 该名称应该是一个点分隔的名称,如“abc”。
在Bean 1.0中,给定的名称可以指示序列化对象或类。 今后还可能增加其他机制。 在bean 1.0中,我们首先尝试将beanName作为序列化对象名称作为类名称。
当使用beanName作为序列化对象名称时,我们将给定的beanName转换为资源路径名,并添加尾随的“.ser”后缀。 然后,我们尝试从该资源加载序列化对象。
例如,给定一个beanName为“xy”,Beans.instantiate将首先尝试从资源“x / y.ser”读取序列化对象,如果失败,它将尝试加载类“xy”并创建一个实例的那个班。
如果bean是java.applet.Applet的子类型,那么它将被给予一些特殊的初始化。 首先,它提供了一个默认的AppletStub和AppletContext。 其次,如果从类名中实例化,则调用applet的“init”方法。 (如果bean被反序列化,则跳过此步骤。)
请注意,对于applet的bean,调用者的责任在applet上调用“start”。 为了正确的行为,应该在将小程序添加到可见的AWT容器之后完成。
请注意,通过beans.instantiate创建的applet在与浏览器中运行的applet稍微不同的环境中运行。 特别是,bean applet无法访问“参数”,所以他们可能希望提供属性get / set方法来设置参数值。 我们建议bean-applet开发人员对JDK appletviewer(参考浏览器环境)和BDK BeanBox(对于引用bean容器)来测试他们的bean-applet。
cls
- 我们应该从中创建bean的类加载器。
如果为空,则使用系统类加载器。
beanName
- 类加载器中的bean的名称。
例如“sun.beanbox.foobah”
beanContext
- 嵌套新bean的BeanContext
initializer
- 新bean的AppletInitializer
ClassNotFoundException
- 如果找不到序列化对象的类。
IOException
- 如果发生I / O错误。
public static Object getInstanceOf(Object bean, 类<?> targetType)
结果可能是相同的对象或不同的对象。 如果请求的目标视图不可用,则返回给定的bean。
此方法在Beans 1.0中作为钩子提供,以便将来可以添加更灵活的bean行为。
bean
- 要从中获取视图的对象。
targetType
- 我们想要获得的视图类型。
public static boolean isInstanceOf(Object bean, 类<?> targetType)
bean
- 我们要从中获取一个视图的Bean。
targetType
- 我们想要获得的视图类型。
public static boolean isDesignTime()
DesignMode
public static boolean isGuiAvailable()
Visibility
public static void setDesignTime(boolean isDesignTime) throws SecurityException
请注意,此方法是安全检查的,不可用(例如)不可信applet。 更具体地说,如果有安全管理器,则调用其checkPropertiesAccess
方法。 这可能会导致SecurityException。
isDesignTime
- 如果我们在应用程序构建器工具中,则为真。
SecurityException
- 如果存在安全管理员,并且其
checkPropertiesAccess
方法不允许设置系统属性。
SecurityManager.checkPropertiesAccess()
public static void setGuiAvailable(boolean isGuiAvailable) throws SecurityException
请注意,此方法是安全检查的,不可用(例如)不可信applet。 更具体地说,如果有一个安全管理器,它的checkPropertiesAccess
方法被调用。 这可能会导致SecurityException。
isGuiAvailable
- 如果GUI交互
isGuiAvailable
,则为真。
SecurityException
- 如果存在安全管理员,并且其
checkPropertiesAccess
方法不允许设置系统属性。
SecurityManager.checkPropertiesAccess()