In bash and shells with similar array support you can also do the following:
# default is an empty array
param=()
# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")
# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4
Demo
demo() {
[[ "$var" ]] && param=("$var") || param=()
echo -n 'output: '
printf '<%s> ' before "${param[@]}" after
echo
}
demo # output: "<before><before> <after>"<after>
var=''
demo # output: "<before><before> <after>"<after>
var='foo bar'
demo # output: "<before><before> <foo bar> <after>"<after>
Note
See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.