|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.beans.Introspector
public class Introspector
Introspector 클래스는, 툴에 대해서, 타겟 Java Bean 가 지원하는 프로퍼티, 이벤트, 메소드를 조사하는 표준적인 수법을 제공합니다.
Introspector 는, 상기의 3 종류의 정보에 대해, Bean 의 클래스와 슈퍼 클래스를 따로 따로 분석해, 명시적 혹은 암시적인 정보를 찾아내, 그 정보를 사용해 타겟의 Bean 를 포괄적으로 기술하는 BeanInfo 객체를 구축합니다.
Foo 클래스에 대해서는, 정보의 문의시에 null 이외의 값을 제공하는 FooBeanInfo 클래스가 있으면, 명시적인 정보를 취득할 수 있습니다. 우선, 타겟의 Bean 클래스의 완전 지정된 패키지명에 「BeanInfo」를 부가해 신규의 클래스명으로 해, BeanInfo 클래스를 검색합니다. 이것에 실패했을 경우는, 이 완전 지정된 패키지명의 마지막 클래스명에 해당하는 부분을 사용해, BeanInfo 패키지 검색 패스로 지정된 패키지 마다 해당 클래스를 검색합니다.
이와 같이, 예를 들어 sun.xyz.OurButton 이라고 하는 클래스의 경우, 우선 sun.xyz.OurButtonBeanInfo 라고 하는 BeanInfo 클래스를 검색해, 발견되지 않는 경우는 BeanInfo 검색 패스내의 패키지 마다 OurButtonBeanInfo 클래스를 검색합니다. 디폴트의 검색 패스의 경우는 sun.beans.infos.OurButtonBeanInfo 가 됩니다.
클래스가 명시적인 BeanInfo 를 제공하는 경우는, 이것을 분석 클래스 및 상속 클래스로부터 취득한 BeanInfo 정보에 추가합니다. 명시적인 정보는, 현재의 클래스와 그 base class에 관한 신뢰할 수 있는 정보라고 볼 수 있으므로, 슈퍼 클래스의 연쇄의 검색은 실시하지 않습니다.
클래스의 명시적인 BeanInfo 가 발견되지 않는 경우는, 저레벨의 리플렉션을 사용해 클래스의 메소드를 조사해 표준 설계 패턴을 적용해, 프로퍼티의 액세스용 메소드, 이벤트 소스 메소드, public 메소드를 식별합니다. 다음에, 클래스의 슈퍼 클래스를 분석해, 이 정보를 추가합니다. 이 때, 슈퍼 클래스의 연쇄를 거슬러 올라갈 가능성도 있습니다.
Introspector 는, 퍼포먼스의 향상의 목적으로 BeanInfo 클래스를 캐쉬하기 위해(때문에), 복수의 클래스 로더를 사용하는 어플리케이션으로 Introspector 를 사용하는 경우는 주의해 주세요. 일반적으로, 클래스의 인트로스페크션을 실행하기 위해서 사용한 ClassLoader
를 파기할 때는,
또는 Introspector.flushCaches
메소드를 사용해, 인트로스페크션 된 모든 클래스를 캐쉬로부터 플래시 하도록 해 주세요.
Introspector.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 |
필드의 상세 |
---|
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
이 Java Bean 의 BeanInfo 클래스에 대해서 인트로스페크션을 실행했던 적이 있는 경우, BeanInfo 캐쉬로부터 BeanInfo 클래스를 취득할 수 있습니다.
beanClass
- 분석되는 Bean 클래스
IntrospectionException
- 인트로스페크션중에 예외가
발생했을 경우flushCaches()
,
flushFromCaches(java.lang.Class >)
public static BeanInfo getBeanInfo(Class <? > beanClass, int flags) throws IntrospectionException
이 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 를 모두 무시한다
IntrospectionException
- 인트로스페크션중에 예외가
발생했을 경우public static BeanInfo getBeanInfo(Class <? > beanClass, Class <? > stopClass) throws IntrospectionException
이 Java Bean 의 BeanInfo 클래스에 대해서, 같은 인수를 사용해 인트로스페크션을 실행했던 적이 있는 경우, BeanInfo 캐쉬로부터 BeanInfo 클래스를 취득할 수 있습니다.
beanClass
- 분석되는 Bean 클래스stopClass
- 분석을 정지하는 base class. stopClass 나
그 base class에 포함되는 메소드, 프로퍼티, 이벤트는,
분석 처리에서는 모두 무시된다
IntrospectionException
- 인트로스페크션중에 예외가
발생했을 경우public static String decapitalize(String name)
예를 들어, 「FooBah」는 「fooBah」, 「X」는 「x」에 변환됩니다만, 「URL」는 변환되지 않습니다.
name
- 소문자에 변환되는 캐릭터 라인
public static String [] getBeanInfoSearchPath()
public static void setBeanInfoSearchPath(String [] path)
시큐리티 매니저가 존재하는 경우, 최초로, 그 checkPropertiesAccess
메소드가 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
path
- 패키지명의 배열
SecurityException
- 시큐리티 매니저가 존재해,
그 checkPropertiesAccess
메소드가,
시스템 프로퍼티의 설정을 허가하지 않는 경우. SecurityManager.checkPropertiesAccess()
public static void flushCaches()
public static void flushFromCaches(Class <? > clz)
clz
- 플래시 되는 Class 객체
NullPointerException
- Class 객체가 null 의 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.