You are supposed to pass information to the constructor from outside. What you have is a field which hasn't been initialised (not “instantiation”) and you are trying to apply its own non‑value to itself.
This is correct syntax:-...but probably incorrect logic and design.
99_999 out of 100_000 Java developers have never seen that error, because they would never try to do that.
It is a weird, utterly and totally useless thing to do, that could literally never do anything good for you. At best you would end up with the same value that your definition and instance initializers left it with before any of your constructors ran.
Apparently Java considers this and makes it a compile failure, slightly interesting.
You are correct about the order of instance initialization, which few people not preparing for a certification exam care about in much detail.
Okay, there are definitely questions on the cert exams expecting us to know about this topic in some detail.
Each of the statements I made are true, I believe.
Campbell's example showed the most common example of how the this() call would be used.
I know for sure the Enthuware and I believe also the Sybex materials correctly describe the instance initialization process in excruciating detail, I only looked quickly but the link I provided seemed to as well.
I believe it is consistent in that both all of the in-line initializations as well as any instance initializer blocks will have completed by the time the first line of any constructor code runs.
It was interesting that you discovered a new syntax error in Java that I never saw before in my life.
As I said, I believe the error is because that code would never need to be written / would never do anything useful for you, so it is concluded to be a mistake.
Not because you were mistaken in your beliefs about the order of the steps in the initialization sequence, which you were not.
RTFJD (the JavaDocs are your friends!) If you haven't read them in a long time, then RRTFJD (they might have changed!)