Returning a reference to a mutable object value stored in one of the object's fields exposes the internal representation of the object

Arrays and some collections are not immutable in the sense that their content still remains mutable.

Immutability in Java only concerns object's reference assignment, not its deep content.

Try this:

@Override
public String[] getDescriptions() {
    return Arrays.copyOf(DESCRIPTIONS, DESCRIPTIONS.length);
}

BTW, caution to java naming convention.. : descriptions, not DESCRIPTIONS