You can't (static final), you need to hook the methods that use this array and handle it there instead.
Well, it depends... Using reflection (e.g. setStaticObjectField), you can change even final fields. The problem is usually that the compiler has inlined those values directly into the code where they are used, so the runtime wouldn't even check the field content. However, with references this can hardly happen, so I would simply try it.
And if you just want to change the individual elements, that should always be possible. Only the reference to the array is final, not the elements themselves.