Creating unique registration numbers using object factories
The number, letter, and strRep fields should be final and must not be static.  By making them static, you've made all of your RegistrationNumber objects very weird, and quite the opposite of immutable.  Constructing one RegistrationNumber changes every previously generated RegistrationNumber!

getInstance() is a bit odd.  Conventionally, the name getInstance() would retrieve a singleton instance — it should the same object every time it is called.  What you have instead is a method that usually generates a new object, but occasionally returns an existing object.  I'm puzzled by the motivation behind that behaviour.