문제

나는 많은 회원들이있는 DTO가 있습니다. Java가 수업에 대한 (in)의 아이디어를지지하는지 궁금합니다. 나는 그것이 그렇게 생각하지 않지만, 그것이 저에게 많은 슬픔을 구할 것입니다. 그래서 나는 거기에 질문을 던질 것이라고 생각했습니다.

도움이 되었습니까?

해결책

글쎄, 당신은 반성으로 할 수 있습니다 :

for (Field field : clazz.getFields())
{
    ...
}

(또는 방법 등과 동등한 것)

그런 다음 특정 인스턴스 또는 정적 값의 필드 값을 얻을 수 있습니다.

다른 팁

그래도 약간 번거 로움입니다.

반사를 사용해야합니다.

보다: class.getDeclaredFieds ()

이 클래스 객체로 표시된 클래스 또는 인터페이스가 선언 한 모든 필드를 반영하는 필드 객체를 반환합니다.

예를 볼 수 있습니다 여기

클래스 객체에서 필드 객체를 얻는 세 가지 방법이 있습니다.

 Class cls = java.awt.Point.class;

 // By obtaining a list of all declared fields.
 Field[] fields = cls.getDeclaredFields();

 // By obtaining a list of all public fields, 
 // both declared and inherited.
 fields = cls.getFields();
 for (int i=0; i<fields.length; i++) {
   Class type = fields[i].getType();
   process(fields[i]);
 }

 // By obtaining a particular Field object.
 // This example retrieves java.awt.Point.x.
 try {
   Field field = cls.getField("x");
   process(field);
   } catch (NoSuchFieldException e) {
 }

참조 수업 더 많은 옵션에 대한 수업 정의.

예, 사용하십시오 반사 API. 특히 확인하십시오 getFields 그리고 getMethods 에서의 방법 Class.

반사를 사용하여 모든 멤버와 기능을 얻을 수 있습니다.

어쩌면 DTO가 왜 그렇게 많은 회원이 있다고 생각하는지 스스로에게 물어봐야 할 수도 있습니다. 리팩터의 시간이 될 수 있습니다.

이 정보에 대해 클래스를 내성 할 수있는 반사 프레임 워크를 살펴보십시오.

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top