2010-12-15 1 views
2

POJO의 속성 이름 배열 (또는 목록)을 가져 오려고합니다. 나는 commons-beanutil의 BeanUtils.describe(obj)을 시도했지만 객체 인스턴스가 필요하다. 하지만 public-no-arg 생성자가없는 클래스 만 있으면 어떻게 될까요? 나는 clazz.newInstance()을 사용하여 객체를 생성 할 수 없다.public no-arg 생성자없이 pojo 클래스의 속성 이름을 얻는 방법은 무엇입니까?

어떻게 해결해야합니까? 클래스를 파고 속성 이름을 전달할 수있는 라이브러리가 있습니까?

은 (내가 수동으로 클래스 구조를 분석하기 위해 반사를 사용할 수 알지만, 편리한 도서관을 찾고 있어요)

감사합니다.

+1

이 작업을 수행하기에는 BeanUtils.describe (Class) 오버로드가 없다는 것이 슬프다. 패치를 구현하고 패치로 제공하는 것이 어떨까요? –

답변

3

나는 (그 문제에 대해, java.beans 또는 무엇이든)을 사용하지,하지만 결코 java.beans.Introspector.getBeanInfo(Class)이 귀하가 찾고있는 것일 수 있습니다.

+0

감사합니다. 편리한 라이브러리가없는 것 같습니다. 그리고 java.beans.Introspector는 이 일을 끝내 라. 고마워. – smallufo

4

자바는 리플렉션 유틸리티로 빌드되어 있습니다.이 유틸리티는 사용할 수 있습니다. 하바는 java doc of Class을 살펴 봅니다. Demo라는 클래스의 모든 getter 메소드를 얻기 위해 반사 Demo.class.getMethods();를 사용하여 예를 들어

(를 instanciating없이.)

List<Method> allGetterMethodsOfClassDemo() = new ArrayList<Method>(); 
for(Method method : Demo.class.getMethods()){ 
    if(method.getName().startsWith("get") || method.getName().startsWith("is")) { 
    allGetterMethodsOfClassDemo.add(method); 
    } 
} 
+0

부울 유형에 * is * 메소드를 추가해야 할 수도 있습니다. ;) getters도 매개 변수가 없으며 반환 유형이 void.class 일 수 없습니다. (지루한, nes pa;) –

+0

@ Peter Lawrey : 힌트를 주셔서 감사합니다. "is"접두사를 추가했습니다. - 다른 말도 맞습니다. – Ralph

+0

아, 다음 문자는 대문자 여야합니다. : "필드 getable (String)"및 "void isolate (String)"와 같은 메서드가 있어야합니다. –

관련 문제