For elements with max occurs greater than one, JAXB will generate a java.util.List property and the underlying implementation will be java.util.ArrayList. You can control which list implementation is used through internal and external schema annotations. You can also use your own domain objects which gives you full control of your object model. This post will discuss these different options.