Ah, I was almost sure @JavaName had to be used for declaring Inner (I have made many trials !). But what I missed was the use of "Outer" as an argument of this(Outer) ! And also I was not sure about where to declare Inner. Now it works. Thanks very much for your detailed answer and your general advice about the use of inner class.