I agree for params. I think it's useful for locals sometimes:
Copy code
final String myVar;
if (someCondition) {
myVar = val1;
} else if (someOtherCondition) {
myVar = val2;
} else {
throw new IllegalStateException("...");
}
// use myVar and know it was properly initialized