Build a URI, using the supplied values in order to replace any URI template parameters. Values are converted to {@code String} usingtheir {@code toString()} method and are then encoded to match therules of the URI component to which they pertain. All '%' characters in the stringified values will be encoded. The state of the builder is unaffected; this method may be called multiple times on the same builder instance.
All instances of the same template parameter will be replaced by the same value that corresponds to the position of the first instance of the template parameter. e.g. the template "{a}/{b}/{a}" with values {"x", "y", "z"} will result in the the URI "x/y/x", not "x/y/z".
NOTE: By default all {@code '/'} characters in the stringified values will beencoded in path templates, i.e. the result is identical to invoking {@link #build(Object[],boolean)} build(values, true)}.To override this behavior use {@code build(values, false)} instead.
@param values a list of URI template parameter values.
@return the URI built from the UriBuilder.
@throws IllegalArgumentException if there are any URI template parameterswithout a supplied value, or if a value is {@code null}.
@throws UriBuilderException if a URI cannot be constructed based on thecurrent state of the builder.
@see #build(Object[],boolean)
@see #buildFromEncoded(Object)