<div dir="auto">Hello RedIODev,<div dir="auto"><br></div><div dir="auto">Thank you for your response!</div><div dir="auto"><br></div><div dir="auto">> I think if we are talking about the initial</div><div dir="auto">> question again the elephant in the room</div><div dir="auto">> is the lack of a way to express subtypes</div><div dir="auto">> in supertypes (F-bounds) without using</div><div dir="auto">> "hacks" like the recursive generic. That</div><div dir="auto">> this (mis)use of generics is confusing is</div><div dir="auto">> demonstrated in this thread and in many</div><div dir="auto">> others.</div><div dir="auto"><br></div><div dir="auto">Just to give some context here, I am a junior java developer. Generics is something I've only recently gotten comfortable with. And most of my understanding is rooted in "if I see this specific thing between the angle brackets, I do another specific thing to satisfy the compiler." That is about as far as my concrete understanding went until yesterday.</div><div dir="auto"><br></div>I say all that to say, I couldn't begin to have a sense of right/wrong, confusing/intuitive, or mis/use at this level of comprehension. I understand generics well enough, and I knew that Enums had that recursive self reference. I was initially surprised when seeing it, but I have emulated it to useful effect many times over.<div dir="auto"><br></div><div dir="auto">My confusion was in trying to understand the discussion. I had a semi-decent grasp of generics as a concept, but not its terminology or why specific rules were in play (and stopping JEP 301). It's like an elementary student who understands how to manipulate fractions, but never learned/remembered the exact terms like numerator/denominator is, or why divide by zero is wrong, only that it shouldn't be done. I only know how to solve the problem, but not its deeper intricacies.</div><div dir="auto"><br></div><div dir="auto">> A good solution would be to introduce a</div><div dir="auto">> "This" type that always refers to the</div><div dir="auto">> current class type even when inheriting.</div><div dir="auto">> I'm by far not the first person to suggest</div><div dir="auto">> that.</div><div dir="auto">> <br><div dir="auto">> But the bigger problem is that this ship</div><div dir="auto">> has sailed for the Enum class. Even if the</div><div dir="auto">> This type was introduced now and used</div><div dir="auto">> in Enum removing the generic parameter</div><div dir="auto">> would be a braking change to the Enum</div><div dir="auto">> class braking every code that relies on</div><div dir="auto">> the parameter to be present.</div><div dir="auto">> </div><div dir="auto">> The possibility to add This regardless of</div><div dir="auto">> the Enum class should still be considered</div><div dir="auto">> thought.</div><div dir="auto"><br></div><div dir="auto">Well, I certainly see the utility. It certainly is a lot easier to grasp from a distance.</div><div dir="auto"><br></div><div dir="auto">But is the only reason why we are doing this is because the existing methodology is confusing and easy to trip up on? Or does it allow us to do stuff we couldn't before?</div><div dir="auto"><br></div><div dir="auto">Thank you for your help and insight!</div><div dir="auto">David Alayachew</div></div></div>