If you are asking if it is possible to break a singleton implemented some other way, then yes it is possible:
- You can use reflection to gain access to a private field
- You can use reflection to update a final field.
Is it practical? Well it depends on what you mean by practical.
Could it happen in practice? Yes.
We cannot enumerate the reasons that someone might need (or choose) to do such a thing. But suppose that you had some pressing reason to change the value of a singleton, and you had lost all of your source code. (Yes. It happens!) Or supposed that you never had the source code in the first place.
When all the code is with me, why will I have such a thing happen to any singleton class at my code.
If you have the source code, and the freedom to change and recompile the source code, then it would be a bad idea to break a singleton using reflection. If it is necessary (for pragmatic reasons) to break the singleton's invariants, then it is better to modify the API so that is clear what you are doing and why.
Rather, such code practice, would be visible to those having access to code repository, so it wont skip the eyes !
Just because someone has access doesn't mean that they will bother to look. And just because they look doesn't mean they will see. (There are ways to hide code that does dubious things within an application code base.)
Anyhow, the point is that this kind of thing is possible for some versions of the singleton pattern (and not others) and anything that is possible could happen if the circumstances allowed or required it.