반사에서 재귀를 사용하는 방법?

카림 모센

내가 가지고 class test는 다른 복잡한 개체를 포함 private class2 e;하고 그 객체는 다른 복잡한 개체를 포함private class3 b;

public class class3 {
    private String x;
    private String y;
    public String getX() {
        return x;
    }
    public void setX(String x) {
        this.x = x;
    }
    public String getY() {
        return y;
    }
    public void setY(String y) {
        this.y = y;
    }
}

//class2
public class class2 {
    private String n;
    private class3 b;
    public String getN() {
        return n;
    }
    public void setN(String n) {
        this.n = n;
    }
    public class3 getB() {
        return b;
    }
    public void setB(class3 b) {
        this.b = b;
    }
}
//class test
public class test {
    private String w;
    private class2 e;

    public String getW() {
        return w;
    }

    public void setW(String w) {
        this.w = w;
    }

    public class2 getE() {
        return e;
    }

    public void setE(class2 e) {
        this.e = e;
    }
}

나는를 가지고있다 달성하기 위해 필요한 것은 Object에서 test내가 모든 게터를 호출 할하고 복잡한 객체를 반환하는 경우 다른 클래스의 객체를 내가 남아있는 복잡한 객체까지 반복적으로 가고 싶어

나는 모든 test객체 데이터를 읽을 수 있습니다. 내가 놓친 부분은 열성 부분입니다.

내 코드는 다음과 같습니다.

private static void writeInLogger(Object obj, String str) {
    Class klazz = obj.getClass();
    if (klazz.isPrimitive() || obj instanceof String
            || obj instanceof Integer || obj instanceof Double
            || obj instanceof Boolean)
        System.out.println(str + obj.toString());
    else {
        try {
            for (PropertyDescriptor propertyDescriptor : Introspector
                    .getBeanInfo(klazz).getPropertyDescriptors()) {
                Method m = propertyDescriptor.getReadMethod();
                if (m != null){
                Object object = m.invoke(obj);
                    Class klazz2 = object.getClass();
                    if(klazz2.isPrimitive() || object instanceof String|| object instanceof Integer || object instanceof Double|| object instanceof Boolean){
                        System.out.println(m + str + m.invoke(obj).toString());
                    }

                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }
    }
}
닥시나 무르 티 카라

writeInLogger방법을 업데이트했습니다 . 또한 쓰기 방법을 확인하기 위해 추가했습니다. 그렇지 않으면 Class속성으로도 얻고 스택이 끊어집니다.

private static void writeInLogger(Object obj, String str) {
    Class klazz = obj.getClass();
    if (klazz.isPrimitive() || obj instanceof String || obj instanceof Integer || obj instanceof Double
            || obj instanceof Boolean)
        System.out.println(str + obj.toString());
    else {
        try {
            for (PropertyDescriptor propertyDescriptor : Introspector.getBeanInfo(klazz).getPropertyDescriptors()) {
                if(propertyDescriptor.getWriteMethod() == null)
                    continue;
                Method m = propertyDescriptor.getReadMethod();
                if (m != null) {
                    Object object = m.invoke(obj);
                    if(object != null)
                        writeInLogger(object, str);
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Hive에서 재귀 쿼리를 사용하는 방법

분류에서Dev

mysql 선택 쿼리에서 재귀를 사용하는 방법

분류에서Dev

std :: list에서 재귀를 사용하는 방법?

분류에서Dev

preg_replace_callback에서 재귀를 사용하는 방법

분류에서Dev

트리에서 재귀를 사용하는 방법

분류에서Dev

XPath를 사용하여 XML에서 재귀 요소를 검색하는 방법

분류에서Dev

typedef를 재귀 적으로 사용하는 방법?

분류에서Dev

재귀 함수를 사용하여 ArrayList를 반환하는 방법

분류에서Dev

재귀를 사용하여 목록에 함수를 적용하는 방법

분류에서Dev

OOJS를 사용한 재귀 방법

분류에서Dev

재귀를 사용하여 문자열을 반환하는 방법?

분류에서Dev

재귀를 사용하여 n 차원 배열에 액세스하는 방법

분류에서Dev

Systemverilog에서 재귀 속성을 사용하는 방법

분류에서Dev

Kotlin에서 재귀 유형을 사용하는 방법

분류에서Dev

검사 제약 조건에서 재귀 CTE를 사용하는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 0/1 배낭 문제에서 선택한 요소를 인쇄하는 방법

분류에서Dev

해결 : 재귀 함수를 사용하여 .eval () 함수에서 빌드를 구현하는 방법

분류에서Dev

재귀를 사용하여 여러 목록을 살펴 보는 방법

분류에서Dev

재귀 기능 제거를 사용하는 방법은 무엇입니까?

분류에서Dev

C 언어로 재귀를 사용하여 문자열을 뒤집는 방법

분류에서Dev

재귀를 사용하여 이진 검색을 만드는 방법

분류에서Dev

재귀 대신 for 루프를 사용하는 방법은 무엇입니까?

분류에서Dev

자바 : 재귀 호출에서 원래 매개 변수를 사용하여 내 메서드를 재귀 적으로 호출하는 방법

분류에서Dev

PHP에서 재귀 함수를 사용하여 배열의 값을 증가시키고 배열에서 총 값을 반환하는 방법

분류에서Dev

try do 함수를 위해 JavaScript에서 재귀를 사용하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 재귀를 사용하여 객체를 찾는 방법은 무엇입니까?

분류에서Dev

터미널에서 inotify-tools를 사용하여 재귀 디렉토리 경로를 얻는 방법

분류에서Dev

객체 지향 형식 (OOP)에서 C ++ 재귀를 사용하여 연결 목록을 인쇄하는 방법

분류에서Dev

평균을 계산하기 위해 배열에서 재귀를 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Hive에서 재귀 쿼리를 사용하는 방법

  2. 2

    mysql 선택 쿼리에서 재귀를 사용하는 방법

  3. 3

    std :: list에서 재귀를 사용하는 방법?

  4. 4

    preg_replace_callback에서 재귀를 사용하는 방법

  5. 5

    트리에서 재귀를 사용하는 방법

  6. 6

    XPath를 사용하여 XML에서 재귀 요소를 검색하는 방법

  7. 7

    typedef를 재귀 적으로 사용하는 방법?

  8. 8

    재귀 함수를 사용하여 ArrayList를 반환하는 방법

  9. 9

    재귀를 사용하여 목록에 함수를 적용하는 방법

  10. 10

    OOJS를 사용한 재귀 방법

  11. 11

    재귀를 사용하여 문자열을 반환하는 방법?

  12. 12

    재귀를 사용하여 n 차원 배열에 액세스하는 방법

  13. 13

    Systemverilog에서 재귀 속성을 사용하는 방법

  14. 14

    Kotlin에서 재귀 유형을 사용하는 방법

  15. 15

    검사 제약 조건에서 재귀 CTE를 사용하는 방법은 무엇입니까?

  16. 16

    재귀를 사용하여 0/1 배낭 문제에서 선택한 요소를 인쇄하는 방법

  17. 17

    해결 : 재귀 함수를 사용하여 .eval () 함수에서 빌드를 구현하는 방법

  18. 18

    재귀를 사용하여 여러 목록을 살펴 보는 방법

  19. 19

    재귀 기능 제거를 사용하는 방법은 무엇입니까?

  20. 20

    C 언어로 재귀를 사용하여 문자열을 뒤집는 방법

  21. 21

    재귀를 사용하여 이진 검색을 만드는 방법

  22. 22

    재귀 대신 for 루프를 사용하는 방법은 무엇입니까?

  23. 23

    자바 : 재귀 호출에서 원래 매개 변수를 사용하여 내 메서드를 재귀 적으로 호출하는 방법

  24. 24

    PHP에서 재귀 함수를 사용하여 배열의 값을 증가시키고 배열에서 총 값을 반환하는 방법

  25. 25

    try do 함수를 위해 JavaScript에서 재귀를 사용하는 방법은 무엇입니까?

  26. 26

    자바 스크립트에서 재귀를 사용하여 객체를 찾는 방법은 무엇입니까?

  27. 27

    터미널에서 inotify-tools를 사용하여 재귀 디렉토리 경로를 얻는 방법

  28. 28

    객체 지향 형식 (OOP)에서 C ++ 재귀를 사용하여 연결 목록을 인쇄하는 방법

  29. 29

    평균을 계산하기 위해 배열에서 재귀를 사용하는 방법은 무엇입니까?

뜨겁다태그

보관