JavaTM Platform
Standard Ed. 6

java.beans
클래스 Introspector

java.lang.Object 
  상위를 확장 java.beans.Introspector


public class Introspector
extends Object

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
 

필드의 상세

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 - 분석을 정지하는 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 의 구현에서의 초기설정은 {"sun.beans.infos"}

setBeanInfoSearchPath

public static void setBeanInfoSearchPath(String [] path)
BeanInfo 클래스의 검색에 사용되는 패키지명의 리스트를 변경합니다. 파라미터 패스가 null 의 경우, 이 메소드의 동작은 미정도리입니다.

시큐리티 매니저가 존재하는 경우, 최초로, 그 checkPropertiesAccess 메소드가 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.

파라미터:
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 Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.