2012-01-25 2 views
0

XML에서 비 정렬 화 된 java 객체가 있습니다. 이 비 정렬 화 된 오브젝트의 부분은, 처리를 위해서 (때문에) 여러 클래스에 보내집니다. 비 정렬 화 된 객체의 내용을 기록해야합니다. toString() 메서드를 쉽게 재정의 할 수 있지만 문제는이 경우 xjc를 사용하여 빌드 할 때 클래스가 생성되고 해당 클래스에서 toString()을 재정의 할 수 없다는 것입니다. 다시 생성 될 때 클래스가 제거 될 것이기 때문입니다.toString() in java

다른 대안을 찾고 있습니다. 어떤 아이디어?

+2

toString()을 쉽게 재정의 할 수 있다면 왜 그렇습니까? 어렵고 복잡한 솔루션을 찾으십니까? –

+2

'toString()'을하고 싶지 않은 것은 무엇입니까? – cheeken

+0

이 경우 클래스는 xjc를 사용하여 빌드 타임에 생성되므로 클래스 생성시 toString()을 재정의 할 수 없습니다. 다시 생성 될 때 클래스가 제거 될 것이기 때문입니다. – Gaurav

답변

2

xjc 플러그인을 사용하여 원하는 toString을 생성 할 수 있습니다.

+0

나는 그것이 일할 수 있다고 생각한다. 이것을 발견했다 http://cxf.apache.org/cxf-xjc-ts.html – Gaurav

0

리플렉션을 사용하여 개체를 검사하고 필요에 따라 원하는 형식으로 문자열 표현을 반환하거나 직접 문자열 표현을 기록하는 유틸리티 클래스를 작성할 수 있습니다.

+0

그 해결책을 생각해 보았습니다. 어쩌면 내가 XML 형식으로 로그인하는 xstream 같은 일부 라이브러리를 사용할 수 있습니다. 단지 다른 솔루션을 찾고 있습니다. – Gaurav

1

마샬링에 toString()을 사용하지 마십시오. 그것이 의도 한 것이 아닙니다. (를 대상으로 그 방법 무엇인지에 대한 안내를 위해 java.lang.Object의 JavaDoc을 참조하십시오.)

당신이 손으로 마샬링/비 정렬 화를 구현하기로 결정하더라도, 당신은이 목적을 위해 toString()를 사용하려고 시도해서는 안된다.

0

비 정렬 Java 객체를 사용하고 xsd 및 언 마샬 된 내용을 알고 있기 때문에 리플렉션을 사용하지 않으려는 경우 리플렉션을 사용하여 문자열 표현을 제공하는 도우미 클래스를 작성합니다. 하드 코딩 할 수 있습니다.