JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.beans
클래스 Introspector

java.lang.Object 
  |
  +--java.beans.Introspector

public class Introspector
extends Object

Introspector 클래스는 툴을 사용해, 타겟 JavaBean 가 서포트하는 프로퍼티, 이벤트, 메소드를 조사하는 표준적인 수법을 제공합니다.

Introspector 는 상기의 3 종류의 정보에 대해, bean 의 클래스와 슈퍼 클래스를 따로 따로 분석해, 명시적 혹은 암시적인 정보를 찾아내, 그 정보를 사용해 타겟의 bean 를 포괄적으로 기술하는 BeanInfo 오브젝트를 구축합니다.

Foo 클래스에 대해서는 정보의 문의시에 null 이외의 값을 제공하는 FooBeanInfo 클래스가 있으면, 명시적인 정보를 취득할 수 있습니다. 우선, 타겟의 bean 클래스의 완전 지정의 패키지명에 「BeanInfo」를 부가해 신규의 클래스명으로 해, BeanInfo 클래스를 검색합니다. 이것에 실패했을 경우는 이 완전 지정의 패키지명의 마지막 클래스명에 해당하는 부분을 사용해, BeanInfo 패키지 검색 패스로 지정된 패키지 마다 해당 클래스를 검색합니다.

이와 같이, 예를 들어 sun.xyz.OurButton 이라고 하는 클래스의 경우, 우선 sun.xyz.OurButtonBeanInfo 라고 하는 BeanInfo 클래스를 검색해, 발견되지 않는 경우는 BeanInfo 검색 패스내의 패키지 마다 OurButtonBeanInfo 클래스를 검색합니다.

클래스가 명시적인 BeanInfo 를 제공하는 경우는 이것을 분석 클래스 및 상속 클래스로부터 취득한 BeanInfo 정보에 추가합니다. 명시적인 정보는 현재의 클래스와 그 base class에 관한 신뢰할 수 있는 정보라고 볼 수 있으므로, 슈퍼 클래스의 연쇄의 검색은 실시하지 않습니다.

클래스의 명시적인 BeanInfo 가 발견되지 않는 경우는 저레벨의 리플렉션을 사용해 클래스의 메소드를 조사해 표준 설계 패턴을 적용해, 프로퍼티의 액세스용 메소드, 이벤트 소스 메소드, public 메소드를 식별합니다. 다음에, 클래스의 슈퍼 클래스를 분석해, 이 정보를 추가합니다. 이 때, 슈퍼 클래스의 연쇄를 거슬러 올라갈 가능성도 있습니다.

인트로스페크션 및 설계 패턴의 상세한 것에 대하여는 「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 클래스를 취득할 수 있습니다.

파라미터:
stopClass - 분석을 정지하는 base class. stopClass 나 그 base class에 포함되는 메소드, 프로퍼티, 이벤트는 분석 처리에서는 모두 무시된다
예외:
IntrospectionException - 인트로스페크션중에 예외가 발생했을 경우

decapitalize

public static String  decapitalize(String  name)
캐릭터 라인을 인수에 취해, 통상의 Java 변수명의 대문자 사용법에 따라 변환하는 유틸리티 메소드입니다. 통상은 최초의 캐릭터를 대문자로부터 소문자로 변환합니다만, 이 변환을 실시하지 않는 특수한 케이스도 있습니다 (복수의 캐릭터가 존재해, 선두의 캐릭터와 2 번째의 캐릭터가 어느쪽이나 대문자인 경우 등).

예를 들어, 「FooBah」는 「fooBah」, 「X」는 「x」에 변환됩니다만, 「URL」는 변환되지 않습니다.

파라미터:
name - 소문자에 변환되는 캐릭터 라인
반환값:
소문자에 변환된 캐릭터 라인

getBeanInfoSearchPath

public static String [] getBeanInfoSearchPath()
BeanInfo 클래스의 검색에 사용하는 패키지명의 리스트를 취득합니다.

반환값:
BeanInfo 클래스의 검색에 사용되는 패키지명의 배열

초기설정은 {"sun.beans.infos"}


setBeanInfoSearchPath

public static void setBeanInfoSearchPath(String [] path)
BeanInfo 클래스의 검색에 사용하는 패키지명의 리스트를 변경합니다. 파라미터 패스가 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
Std.  Ed.  v1. 4.0

버그의 보고와 기능의 리퀘스트
이외의 API 레퍼런스 및 개발자용 문서에 대해서는 Java 2 SDK SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.