Estoy tratando de utilizar la introspección de JAXB para ordenar y desenmascarar algunos objetos de dominio existentes marcados con anotaciones JAXB. La mayoría de las cosas funcionan como se esperaba, pero estoy teniendo bastantes problemas para obtener una clase bastante simple para serializar. Esta clase se utiliza como un @XmlElement en un número de granos y se ve algo como:JAXB Marshalling and Generics
public class Range<E extends Comparable<E>> implements Serializable {
protected boolean startInclusive, endInclusive;
protected E start, end;
public Range(){
startInclusive = endInclusive = true;
}
public boolean contains(E value){...}
public E getEnd() {
return end;
}
public void setEnd(E end) {
this.end = end;
}
public boolean isEndInclusive() {
return endInclusive;
}
public void setEndInclusive(boolean endInclusive) {
this.endInclusive = endInclusive;
}
public E getStart() {
return start;
}
public void setStart(E start) {
this.start = start;
}
public boolean isStartInclusive() {
return startInclusive;
}
public void setStartInclusive(boolean startInclusive) {
this.startInclusive = startInclusive;
}
}
he tratado de hacer lo siguiente, sin éxito, JAXB todavía está enojado con la interfaz Comparable.
public class DoubleRange extends Range<Double> {}
El uso de ambos Rango y DoubleRange como tipo de retorno para los rendimientos del getter frijol una excepción como:
java.lang.Comparable is an interface, and JAXB can't handle interfaces. this problem is related to the following location: at java.lang.Comparable at protected java.lang.Comparable com.controlpath.util.Range.start at example.util.Range at example.util.DoubleRange at public example.util.DoubleRange example.domain.SomeBean.getRange() at example.domain.SomeBean
Soy consciente de que en la lista de la mayoría de los casos <T> y mapa < T, U > única obra porque la especificación JAXB tiene disposiciones especiales para esos tipos cuando se encuentran en beans, pero ¿hay alguna manera de transmitir lo que quiero al motor de introspección JAXB sin tener que volver a implementar el rango con campos no genéricos?
Estoy tratando de obtener una idea de por qué JAXB está molesto y evitar una gran cantidad de código de clasificación personalizada (ya que estoy seguro de que voy a golpear esto de nuevo en algún momento en el futuro, potencialmente en un objeto mucho más complejo). Pero esto técnicamente ES una respuesta, y lo marcaré como tal en unos días si nadie más tiene uno mejor. Gracias =) –