JAXB принудительное упорядочение множеств - PullRequest
3 голосов
/ 07 октября 2011

Я занимаюсь маршалингом объектов, у которых есть поля типа Set. Реализация не отсортирована, поэтому порядок результирующих элементов XML произвольный, более того, каждый раз, когда я выполняю маршалинг, я получаю другой порядок.

Есть ли способ сообщить маршаллеру, как сортировать содержимое поля во время маршалинга?

1 Ответ

0 голосов
/ 11 октября 2011

Вы можете воспользоваться SortedSet. Если вы инициализируете экземпляр Set в своем экземпляре, JAXB будет использовать эту реализацию вместо создания новой:

package forum7686859;

import java.util.Set;
import java.util.TreeSet;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Root {

    //private Set<String> children = new HashSet<String>();
    private Set<String> children = new TreeSet<String>();

    public Set<String> getChildren() {
        return children;
    }

    public void setChildren(Set<String> children) {
        this.children = children;
    }

}
...