Вы можете создать два класса, которые расширяют ваш класс User, а затем использовать определенный дочерний класс на основе, если вы выполняете маршалинг на unmarshalling.
Например, для класса User:
public class User {
@XmlElement
private String value;
public User() { }
public User(String value) {
this.value = value;
}
}
Вы можете иметь UserIn:
@XmlRootElement(name = "UserIn")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserIn extends User {
public UserIn() { }
public UserIn(String value) {
super(value);
}
}
и UserOut:
@XmlRootElement(name = "UserOut")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserOut extends User {
public UserOut() { }
public UserOut(String value) {
super(value);
}
}
Укажите соответствующий класс, где вам нужно, и вы получите его для работы с желаемым вводом или выводом.