JiBX 바인딩을 사용하려는 클래스에서 사용중인 인터페이스를 어떻게 유지할 수 있습니까?JiBX : 코드에서 인터페이스를 계속 사용하려면 어떻게해야합니까?
예 :
public interface A {
B getB();
void setB(B b);
}
public interface B {
String getData();
void setData(String data);
}
public class AImpl implements A {
B b;
@Override
public B getB() {
return b;
}
@Override
public void setB(B b) {
this.b = b;
}
}
public class BImpl implements B {
private String data;
@Override
public String getData() {
return data;
}
@Override
public void setData(String data) {
this.data = data;
}
}
그리고이 된 문서가 :
: 내 코드를 실행하려고하면<binding>
<mapping name="A"
class="com.test.AImpl">
<structure name="B" usage="optional" get-method="getB" set-method="setB"/>
</mapping>
<mapping name="B"
class="com.test.BImpl">
<value name="data" set-method="setData" get-method="getData" usage="optional"/>
</mapping>
</binding>
나는이 예외가 나는이 아주 간단한 자바의 모델이
java.lang.ClassFormatError: Method in class com/test/B has illegal modifiers: 0x1001
두 매핑에서 'abstract = "true"'를 사용하려고했습니다.이 exceptio를 얻으려는 것입니다. N :
는...Caused by: org.jibx.runtime.JiBXException: Unable to access binding information for class com.test.A Make sure the binding has been compiled...
내가 찾은 유일한 해결책은 AImpl은 B 대신 BImpl를 개최 가지고 있고, 게터 반환 BImpl을 가지고 있고 세터 BImpl을받을. 인터페이스가 완전히 깨지는 것은 매우 잘못되었습니다.
어떻게 해결할 수 있습니까? 내가 머리카락을 꺼내고, 울부 짖음 (진짜 문제는 훨씬 더 복잡하고, JiBX의 비밀스러운 오류 메시지는 도움이되지 않습니다.) 도움이되지 않습니다.
해결할 수 있습니까? JiBX가 정말로 방해가 되는가? (모든 인터페이스 프로그래밍을 포기해야한다는 점에서)
"사용 AbstractB"는 같은 문제이므로 한 단계 만 제거하면 답변하지 마십시오.
위대한 대답은 하나의 수정입니다. 생성 유형은 최소한 제시된 경우에는 구조가 아닌 B의 매핑에 있어야합니다. 얼마나 많은 시간 동안 나는 그것을 보지 않고 문제를 돌고있다.당신은 방금 내 일을 다시 제정신으로 만들었습니다 :) –