【发布时间】:2014-10-29 17:49:01
【问题描述】:
我正在使用 jaxb/jaxws 库来处理 Soap 消息。当肥皂故障发生时,我必须将其转换为其中一种消息类型。也就是说,我做这样的事情:
if(exceptionObject instanceof Message1Data){
Integer errorCode = ((Message1ExceptionData) exceptionObject).
getExceptionData().getErrorCode();
}
if(exceptionObject instanceof Message2Data){
Integer errorCode = ((Message2ExceptionData) exceptionObject).
getExceptionData().getErrorCode();
}
//...
对于一堆不同类型的消息。所有这些都有函数 getErrorCode() 但都是自动生成的,因此没有任何类型的类继承。
因此,这变成了一长串 if 语句,以获取始终存在的 errorCode。有没有办法告诉编译器可以在对象上调用此函数,类似于我将如何转换对象以访问某些函数。因此,我可以删除它并执行类似
的操作,而不是执行一堆 if 语句Integer errorCode = exceptionObject.getExceptionData().getErrorCode();
一次,而不是为每种类型的消息使用相同的代码?或者 jaxb/jaxws 中是否有一个选项可以告诉它这些类中的每一个都实现了一个接口? (少写一个允许这样做的自定义库)
【问题讨论】: